X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FSystem.Runtime.Remoting%2FSystem.Runtime.Remoting.Channels.Http%2FHttpRemotingHandler.cs;h=206b032fe6dbdc1a8624221fb1765d1852f53dac;hb=15af51806d816ad6ad966bc1dfbdd232b63fde52;hp=3cb1475817072c8af12365abcb5adf7396214f4b;hpb=1fabd87b02f8d2e359150ed7a9e92613e60383bc;p=mono.git diff --git a/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Http/HttpRemotingHandler.cs b/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Http/HttpRemotingHandler.cs index 3cb14758170..206b032fe6d 100644 --- a/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Http/HttpRemotingHandler.cs +++ b/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Http/HttpRemotingHandler.cs @@ -65,7 +65,6 @@ namespace System.Runtime.Remoting.Channels.Http HttpResponse response = context.Response; // Create transport headers for the request - TransportHeaders theaders = new TransportHeaders(); string objectUri = request.RawUrl; @@ -86,12 +85,16 @@ namespace System.Runtime.Remoting.Channels.Http ITransportHeaders responseHeaders; Stream responseStream; - // Dispatch the request + // Dispatch the request + ServerProcessing proc = transportSink.SynchronousDispatch + (theaders, request.InputStream, out responseHeaders, out responseStream); - transportSink.DispatchRequest (request.InputStream, theaders, out responseStream, out responseHeaders); + if (proc == ServerProcessing.Async) { + throw new NotSupportedException ("HttpRemotingHandler does not support async processing in " + + "the synchronous HTTP pipeline" ); + } // Write the response - if (responseHeaders != null && responseHeaders["__HttpStatusCode"] != null) { // The formatter can set the status code @@ -108,15 +111,10 @@ namespace System.Runtime.Remoting.Channels.Http response.AppendHeader(key, entry.Value.ToString()); } } - - byte[] bodyBuffer = bodyBuffer = new byte [responseStream.Length]; - responseStream.Seek (0, SeekOrigin.Begin); - - int nr = 0; - while (nr < responseStream.Length) - nr += responseStream.Read (bodyBuffer, nr, bodyBuffer.Length - nr); - response.OutputStream.Write (bodyBuffer, 0, bodyBuffer.Length); + if (responseStream != null) { + HttpClientTransportSink.CopyStream (responseStream, response.OutputStream, 1024); + } } } }