gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r33266 - in libmicrohttpd: . src/include src/microhttpd


From: gnunet
Subject: [GNUnet-SVN] r33266 - in libmicrohttpd: . src/include src/microhttpd
Date: Tue, 13 May 2014 18:26:49 +0200

Author: grothoff
Date: 2014-05-13 18:26:49 +0200 (Tue, 13 May 2014)
New Revision: 33266

Modified:
   libmicrohttpd/ChangeLog
   libmicrohttpd/src/include/microhttpd.h
   libmicrohttpd/src/microhttpd/connection.c
   libmicrohttpd/src/microhttpd/internal.h
Log:
-fix #3397

Modified: libmicrohttpd/ChangeLog
===================================================================
--- libmicrohttpd/ChangeLog     2014-05-13 15:41:59 UTC (rev 33265)
+++ libmicrohttpd/ChangeLog     2014-05-13 16:26:49 UTC (rev 33266)
@@ -1,3 +1,8 @@
+Tue May 13 18:24:37 CEST 2014
+       Fix accidental transmission of footer termination '\r\n'
+       for responses with zero byte payload and non-chunked
+       encoding (#3397).  Thanks to amatus for reporting. -CG
+
 Sun May  4 11:05:26 CEST 2014
        Fix gnutls header check to make it cross-compile aware. -BK
 

Modified: libmicrohttpd/src/include/microhttpd.h
===================================================================
--- libmicrohttpd/src/include/microhttpd.h      2014-05-13 15:41:59 UTC (rev 
33265)
+++ libmicrohttpd/src/include/microhttpd.h      2014-05-13 16:26:49 UTC (rev 
33266)
@@ -130,7 +130,7 @@
  * Current version of the library.
  * 0x01093001 = 1.9.30-1.
  */
-#define MHD_VERSION 0x00093500
+#define MHD_VERSION 0x00093501
 
 /**
  * MHD-internal return code for "YES".

Modified: libmicrohttpd/src/microhttpd/connection.c
===================================================================
--- libmicrohttpd/src/microhttpd/connection.c   2014-05-13 15:41:59 UTC (rev 
33265)
+++ libmicrohttpd/src/microhttpd/connection.c   2014-05-13 16:26:49 UTC (rev 
33266)
@@ -585,15 +585,23 @@
                (0 == strcasecmp (connection->version,
                                  MHD_HTTP_VERSION_1_1)) )
             {
-              connection->have_chunked_upload = MHD_YES;
               have_encoding = MHD_get_response_header (connection->response,
                                                       
MHD_HTTP_HEADER_TRANSFER_ENCODING);
               if (NULL == have_encoding)
+              {
                 MHD_add_response_header (connection->response,
                                          MHD_HTTP_HEADER_TRANSFER_ENCODING,
                                          "chunked");
+                connection->have_chunked_upload = MHD_YES;
+              }
              else if (0 != strcasecmp (have_encoding, "chunked"))
+              {
                add_close = MHD_YES; /* application already set some strange 
encoding, can't do 'chunked' */
+              }
+              else
+              {
+                connection->have_chunked_upload = MHD_YES;
+              }
             }
           else
             {
@@ -615,7 +623,7 @@
           ( (NULL == connection->method) ||
             (0 != strcasecmp (connection->method,
                               MHD_HTTP_METHOD_CONNECT)) ||
-            (0 != connection->response->total_size) ) )
+            (MHD_SIZE_UNKNOWN != connection->response->total_size) ) )
        {
          /*
             Here we add a content-length if one is missing; however,
@@ -2133,7 +2141,7 @@
           break;
         case MHD_CONNECTION_CHUNKED_BODY_READY:
           do_write (connection);
-         if (connection->state !=  MHD_CONNECTION_CHUNKED_BODY_READY)
+         if (MHD_CONNECTION_CHUNKED_BODY_READY != connection->state)
             break;
           check_write_done (connection,
                             (connection->response->total_size ==
@@ -2503,8 +2511,9 @@
           break;
         case MHD_CONNECTION_BODY_SENT:
           build_header_response (connection);
-          if (connection->write_buffer_send_offset ==
-              connection->write_buffer_append_offset)
+          if ( (MHD_NO == connection->have_chunked_upload) ||
+               (connection->write_buffer_send_offset ==
+                connection->write_buffer_append_offset) )
             connection->state = MHD_CONNECTION_FOOTERS_SENT;
           else
             connection->state = MHD_CONNECTION_FOOTERS_SENDING;

Modified: libmicrohttpd/src/microhttpd/internal.h
===================================================================
--- libmicrohttpd/src/microhttpd/internal.h     2014-05-13 15:41:59 UTC (rev 
33265)
+++ libmicrohttpd/src/microhttpd/internal.h     2014-05-13 16:26:49 UTC (rev 
33266)
@@ -290,7 +290,7 @@
   MHD_mutex_ mutex;
 
   /**
-   * Set to MHD_SIZE_UNKNOWN if size is not known.
+   * Set to #MHD_SIZE_UNKNOWN if size is not known.
    */
   uint64_t total_size;
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]