glib r7345 - in trunk/gio: . win32



Author: tml
Date: Tue Aug 12 23:40:39 2008
New Revision: 7345
URL: http://svn.gnome.org/viewvc/glib?rev=7345&view=rev

Log:
2008-08-13  Tor Lillqvist  <tml novell com>

	* 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.



Modified:
   trunk/gio/ChangeLog
   trunk/gio/win32/gwinhttpfileoutputstream.c

Modified: trunk/gio/win32/gwinhttpfileoutputstream.c
==============================================================================
--- trunk/gio/win32/gwinhttpfileoutputstream.c	(original)
+++ trunk/gio/win32/gwinhttpfileoutputstream.c	Tue Aug 12 23:40:39 2008
@@ -142,9 +142,8 @@
       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 @@
       (request,
        wheaders, -1,
        NULL, 0,
-       0,
+       count,
        0))
     {
       char *emsg = _g_winhttp_error_message (GetLastError ());
@@ -168,7 +167,6 @@
       return -1;
     }
   
-  winhttp_stream->offset += count;
   g_free (wheaders);
 
   if (!G_WINHTTP_VFS_GET_CLASS (winhttp_stream->file->vfs)->pWinHttpWriteData
@@ -185,6 +183,8 @@
       return -1;
     }
   
+  winhttp_stream->offset += bytes_written;
+
   if (!G_WINHTTP_VFS_GET_CLASS (winhttp_stream->file->vfs)->pWinHttpReceiveResponse
       (request, NULL))
     {



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