Remove commented code.
[mono.git] / mcs / class / System / System.Net / ResponseStream.cs
index 7cddd01714343dcbeee8ee782adc2564e6045d20..b414f00a5acaea08b94281c1f95ad761b1b129b5 100644 (file)
@@ -25,7 +25,9 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-#if NET_2_0
+
+#if NET_2_0 && SECURITY_DEP
+
 using System.IO;
 using System.Net.Sockets;
 using System.Text;
@@ -34,18 +36,19 @@ namespace System.Net {
        // FIXME: Does this buffer the response until Close?
        // What happens when we set content-length to X and write X-1 bytes then close?
        // what if we don't set content-length at all?
-       class ResponseStream : NetworkStream
+       class ResponseStream : Stream
        {
                HttpListenerResponse response;
                bool ignore_errors;
                bool disposed;
                bool trailer_sent;
+               Stream stream;
 
-               internal ResponseStream (Socket sock, HttpListenerResponse response, bool ignore_errors) :
-                                       base (sock, false)
+               internal ResponseStream (Stream stream, HttpListenerResponse response, bool ignore_errors)
                {
                        this.response = response;
                        this.ignore_errors = ignore_errors;
+                       this.stream = stream;
                }
 
                public override bool CanRead {
@@ -74,6 +77,9 @@ namespace System.Net {
                {
                        if (disposed == false) {
                                disposed = true;
+                               if (response.HeadersSent == false)
+                                       response.SendHeaders (true);
+
                                if (response.SendChunked && !trailer_sent) {
                                        WriteChunkSize (0, true);
                                        trailer_sent = true;
@@ -91,17 +97,17 @@ namespace System.Net {
                {
                        string str = String.Format ("{0:x}\r\n{1}", size, final ? "\r\n" : "");
                        byte [] b = Encoding.ASCII.GetBytes (str);
-                       base.Write (b, 0, b.Length);
+                       stream.Write (b, 0, b.Length);
                }
 
                internal void InternalWrite (byte [] buffer, int offset, int count)
                {
                        if (ignore_errors) {
                                try {
-                                       base.Write (buffer, offset, count);
+                                       stream.Write (buffer, offset, count);
                                } catch { }
                        } else {
-                               base.Write (buffer, offset, count);
+                               stream.Write (buffer, offset, count);
                        }
                }
 
@@ -111,7 +117,7 @@ namespace System.Net {
                                throw new ObjectDisposedException (GetType ().ToString ());
 
                        if (response.HeadersSent == false)
-                               response.SendHeaders ();
+                               response.SendHeaders (false);
 
                        bool chunked = response.SendChunked;
                        try {
@@ -121,7 +127,7 @@ namespace System.Net {
                        InternalWrite (buffer, offset, count);
                        try {
                                if (chunked)
-                                       base.Write (crlf, 0, 2);
+                                       stream.Write (crlf, 0, 2);
                        } catch { }
                }
 
@@ -132,13 +138,13 @@ namespace System.Net {
                                throw new ObjectDisposedException (GetType ().ToString ());
 
                        if (response.HeadersSent == false)
-                               response.SendHeaders ();
+                               response.SendHeaders (false);
 
                        try {
                                if (response.SendChunked)
                                        WriteChunkSize (count, false);
                        } catch { }
-                       return base.BeginWrite (buffer, offset, count, cback, state);
+                       return stream.BeginWrite (buffer, offset, count, cback, state);
                }
 
                public override void EndWrite (IAsyncResult ares)
@@ -148,14 +154,14 @@ namespace System.Net {
 
                        if (ignore_errors) {
                                try {
-                                       base.EndWrite (ares);
+                                       stream.EndWrite (ares);
                                        if (response.SendChunked)
-                                               base.Write (crlf, 0, 2);
+                                               stream.Write (crlf, 0, 2);
                                } catch { }
                        } else {
-                               base.EndWrite (ares);
+                               stream.EndWrite (ares);
                                if (response.SendChunked)
-                                       base.Write (crlf, 0, 2);
+                                       stream.Write (crlf, 0, 2);
                        }
                }