diff options
Diffstat (limited to 'src/daemon/connection.c')
-rw-r--r-- | src/daemon/connection.c | 52 |
1 files changed, 24 insertions, 28 deletions
diff --git a/src/daemon/connection.c b/src/daemon/connection.c index cb3affc8..b612b8e7 100644 --- a/src/daemon/connection.c +++ b/src/daemon/connection.c | |||
@@ -1836,40 +1836,36 @@ parse_connection_headers (struct MHD_Connection *connection) | |||
1836 | return; | 1836 | return; |
1837 | } | 1837 | } |
1838 | 1838 | ||
1839 | clen = MHD_lookup_connection_value (connection, | 1839 | connection->remaining_upload_size = 0; |
1840 | MHD_HEADER_KIND, | 1840 | enc = MHD_lookup_connection_value (connection, |
1841 | MHD_HTTP_HEADER_CONTENT_LENGTH); | 1841 | MHD_HEADER_KIND, |
1842 | if (clen != NULL) | 1842 | MHD_HTTP_HEADER_TRANSFER_ENCODING); |
1843 | if (enc != NULL) | ||
1843 | { | 1844 | { |
1844 | cval = strtoul (clen, &end, 10); | 1845 | connection->remaining_upload_size = MHD_SIZE_UNKNOWN; |
1845 | if ( ('\0' != *end) || | 1846 | if (0 == strcasecmp (enc, "chunked")) |
1846 | ( (LONG_MAX == cval) && (errno == ERANGE) ) ) | 1847 | connection->have_chunked_upload = MHD_YES; |
1848 | } | ||
1849 | else | ||
1850 | { | ||
1851 | clen = MHD_lookup_connection_value (connection, | ||
1852 | MHD_HEADER_KIND, | ||
1853 | MHD_HTTP_HEADER_CONTENT_LENGTH); | ||
1854 | if (clen != NULL) | ||
1847 | { | 1855 | { |
1856 | cval = strtoul (clen, &end, 10); | ||
1857 | if ( ('\0' != *end) || | ||
1858 | ( (LONG_MAX == cval) && (errno == ERANGE) ) ) | ||
1859 | { | ||
1848 | #if HAVE_MESSAGES | 1860 | #if HAVE_MESSAGES |
1849 | MHD_DLOG (connection->daemon, | 1861 | MHD_DLOG (connection->daemon, |
1850 | "Failed to parse `%s' header `%s', closing connection.\n", | 1862 | "Failed to parse `%s' header `%s', closing connection.\n", |
1851 | MHD_HTTP_HEADER_CONTENT_LENGTH, clen); | 1863 | MHD_HTTP_HEADER_CONTENT_LENGTH, clen); |
1852 | #endif | 1864 | #endif |
1853 | CONNECTION_CLOSE_ERROR (connection, NULL); | 1865 | CONNECTION_CLOSE_ERROR (connection, NULL); |
1854 | return; | 1866 | return; |
1855 | } | 1867 | } |
1856 | connection->remaining_upload_size = cval; | 1868 | connection->remaining_upload_size = cval; |
1857 | } | ||
1858 | else | ||
1859 | { | ||
1860 | enc = MHD_lookup_connection_value (connection, | ||
1861 | MHD_HEADER_KIND, | ||
1862 | MHD_HTTP_HEADER_TRANSFER_ENCODING); | ||
1863 | if (NULL == enc) | ||
1864 | { | ||
1865 | /* this request (better) not have a body */ | ||
1866 | connection->remaining_upload_size = 0; | ||
1867 | } | ||
1868 | else | ||
1869 | { | ||
1870 | connection->remaining_upload_size = MHD_SIZE_UNKNOWN; | ||
1871 | if (0 == strcasecmp (enc, "chunked")) | ||
1872 | connection->have_chunked_upload = MHD_YES; | ||
1873 | } | 1869 | } |
1874 | } | 1870 | } |
1875 | } | 1871 | } |