From: Tor Lillqvist Date: Tue, 12 Aug 2008 23:40:39 +0000 (+0000) Subject: Don't write the Content-Length header ourselves, WinHttpSendRequest() X-Git-Url: http://git.openbox.org/?a=commitdiff_plain;h=af8ebc9e552b6062e916c1bfc3982de8da4340d4;p=dana%2Fcg-glib.git Don't write the Content-Length header ourselves, WinHttpSendRequest() 2008-08-13 Tor Lillqvist * win32/gwinhttpfileoutputstream.c (g_winhttp_file_output_stream_write): Don't write the Content-Length header ourselves, WinHttpSendRequest() takes care of that when the dwTotalLength parameter is non-zero. Increment offset by the number of actual bytes sent, although I wonder if such a scenario is possible where less than requested would be sent and accepted by the server without errors. svn path=/trunk/; revision=7345 --- diff --git a/gio/ChangeLog b/gio/ChangeLog index 1ea03f04..58300f15 100644 --- a/gio/ChangeLog +++ b/gio/ChangeLog @@ -1,3 +1,13 @@ +2008-08-13 Tor Lillqvist + + * win32/gwinhttpfileoutputstream.c + (g_winhttp_file_output_stream_write): Don't write the + Content-Length header ourselves, WinHttpSendRequest() takes care + of that when the dwTotalLength parameter is non-zero. Increment + offset by the number of actual bytes sent, although I wonder if + such a scenario is possible where less than requested would be + sent and accepted by the server without errors. + 2008-08-13 Tor Lillqvist * win32/gwinhttpvfs.c diff --git a/gio/win32/gwinhttpfileoutputstream.c b/gio/win32/gwinhttpfileoutputstream.c index 19b6e853..898a7299 100644 --- a/gio/win32/gwinhttpfileoutputstream.c +++ b/gio/win32/gwinhttpfileoutputstream.c @@ -142,9 +142,8 @@ g_winhttp_file_output_stream_write (GOutputStream *stream, return -1; } - headers = g_strdup_printf ("Content-Range: bytes %" G_GINT64_FORMAT "-%" G_GINT64_FORMAT "/*\r\n" - "Content-Length: %" G_GSIZE_FORMAT "\r\n", - winhttp_stream->offset, winhttp_stream->offset + count, count); + headers = g_strdup_printf ("Content-Range: bytes %" G_GINT64_FORMAT "-%" G_GINT64_FORMAT "/*\r\n", + winhttp_stream->offset, winhttp_stream->offset + count); wheaders = g_utf8_to_utf16 (headers, -1, NULL, NULL, NULL); g_free (headers); @@ -152,7 +151,7 @@ g_winhttp_file_output_stream_write (GOutputStream *stream, (request, wheaders, -1, NULL, 0, - 0, + count, 0)) { char *emsg = _g_winhttp_error_message (GetLastError ()); @@ -168,7 +167,6 @@ g_winhttp_file_output_stream_write (GOutputStream *stream, return -1; } - winhttp_stream->offset += count; g_free (wheaders); if (!G_WINHTTP_VFS_GET_CLASS (winhttp_stream->file->vfs)->pWinHttpWriteData @@ -185,6 +183,8 @@ g_winhttp_file_output_stream_write (GOutputStream *stream, return -1; } + winhttp_stream->offset += bytes_written; + if (!G_WINHTTP_VFS_GET_CLASS (winhttp_stream->file->vfs)->pWinHttpReceiveResponse (request, NULL)) {