瀏覽代碼

update components

Luke Pulverenti 8 年之前
父節點
當前提交
3e06bda46b

+ 1 - 3
ServiceStack/HttpResponseExtensionsInternal.cs

@@ -161,10 +161,8 @@ namespace ServiceStack
             var responseText = result as string;
             if (responseText != null)
             {
-                if (response.ContentType == null || response.ContentType == "text/html")
-                    response.ContentType = defaultContentType;
-
                 var bytes = Encoding.UTF8.GetBytes(responseText);
+                response.SetContentLength(bytes.Length);
                 await response.OutputStream.WriteAsync(bytes, 0, bytes.Length).ConfigureAwait(false);
                 return;
             }

+ 6 - 12
SocketHttpListener.Portable/Net/HttpConnection.cs

@@ -209,7 +209,7 @@ namespace SocketHttpListener.Net
             // TODO: can we get this stream before reading the input?
             if (o_stream == null)
             {
-                if (context.Response.SendChunked || isExpect100Continue)
+                if (context.Response.SendChunked || isExpect100Continue || context.Response.ContentLength64 <= 0)
                 {
                     o_stream = new ResponseStream(stream, context.Response, _memoryStreamFactory, _textEncoding);
                 }
@@ -438,7 +438,9 @@ namespace SocketHttpListener.Net
                     str = String.Format("<h1>{0}</h1>", description);
 
                 byte[] error = context.Response.ContentEncoding.GetBytes(str);
-                response.Close(error, false);
+                response.ContentLength64 = error.Length;
+                response.OutputStream.Write(error, 0, (int)error.Length);
+                response.Close();
             }
             catch
             {
@@ -492,7 +494,9 @@ namespace SocketHttpListener.Net
                 {
                     Stream st = GetResponseStream();
                     if (st != null)
+                    {
                         st.Dispose();
+                    }
 
                     o_stream = null;
                 }
@@ -514,16 +518,6 @@ namespace SocketHttpListener.Net
 
                 if (!force_close && context.Request.FlushInput())
                 {
-                    if (chunked && context.Response.ForceCloseChunked == false)
-                    {
-                        // Don't close. Keep working.
-                        reuses++;
-                        Unbind();
-                        Init();
-                        BeginReadRequest();
-                        return;
-                    }
-
                     reuses++;
                     Unbind();
                     Init();

+ 1 - 22
SocketHttpListener.Portable/Net/HttpListenerResponse.cs

@@ -30,8 +30,6 @@ namespace SocketHttpListener.Net
         internal bool HeadersSent;
         internal object headers_lock = new object();
 
-        bool force_close_chunked;
-
         private readonly ILogger _logger;
         private readonly ITextEncoding _textEncoding;
 
@@ -50,11 +48,6 @@ namespace SocketHttpListener.Net
             }
         }
 
-        internal bool ForceCloseChunked
-        {
-            get { return force_close_chunked; }
-        }
-
         public Encoding ContentEncoding
         {
             get
@@ -327,7 +320,7 @@ namespace SocketHttpListener.Net
             headers.Add(name, value);
         }
 
-        void Close(bool force)
+        private void Close(bool force)
         {
             if (force)
             {
@@ -345,20 +338,6 @@ namespace SocketHttpListener.Net
             Close(false);
         }
 
-        public void Close(byte[] responseEntity, bool willBlock)
-        {
-            if (disposed)
-                return;
-
-            if (responseEntity == null)
-                throw new ArgumentNullException("responseEntity");
-
-            //TODO: if willBlock -> BeginWrite + Close ?
-            ContentLength64 = responseEntity.Length;
-            OutputStream.Write(responseEntity, 0, (int)content_length);
-            Close(false);
-        }
-
         public void Redirect(string url)
         {
             StatusCode = 302; // Found