Hans Leidekker : winhttp: Implement WinHttpWriteData.

Alexandre Julliard julliard at winehq.org
Tue Aug 26 07:07:44 CDT 2008


Module: wine
Branch: master
Commit: 6619e54d1eaf5f62115e8fa43a2db16589e47c16
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=6619e54d1eaf5f62115e8fa43a2db16589e47c16

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Tue Aug 26 11:05:02 2008 +0200

winhttp: Implement WinHttpWriteData.

---

 dlls/winhttp/main.c          |   12 ------------
 dlls/winhttp/request.c       |   28 ++++++++++++++++++++++++++++
 dlls/winhttp/tests/winhttp.c |    4 ++--
 3 files changed, 30 insertions(+), 14 deletions(-)

diff --git a/dlls/winhttp/main.c b/dlls/winhttp/main.c
index 220cc51..2d3ec2f 100644
--- a/dlls/winhttp/main.c
+++ b/dlls/winhttp/main.c
@@ -105,18 +105,6 @@ BOOL WINAPI WinHttpSetOption (HINTERNET hInternet, DWORD dwOption, LPVOID lpBuff
     return FALSE;
 }
 
-/***********************************************************************
- *          WinHttpWriteData (winhttp.@)
- */
-BOOL WINAPI WinHttpWriteData (HINTERNET hRequest, LPCVOID lpBuffer,
-                              DWORD dwNumberOfBytesToWrite, LPDWORD lpdwNumberOfBytesWritten)
-{
-    FIXME("(%p, %d, %p): stub\n", lpBuffer, dwNumberOfBytesToWrite, lpdwNumberOfBytesWritten);
-
-    SetLastError(ERROR_NOT_SUPPORTED);
-    return FALSE;
-}
-
 BOOL WINAPI InternetCrackUrlW( LPCWSTR, DWORD, DWORD, LPURL_COMPONENTSW );
 BOOL WINAPI InternetCreateUrlW( LPURL_COMPONENTS, DWORD, LPWSTR, LPDWORD );
 
diff --git a/dlls/winhttp/request.c b/dlls/winhttp/request.c
index 21e59c7..0d5d203 100644
--- a/dlls/winhttp/request.c
+++ b/dlls/winhttp/request.c
@@ -1109,3 +1109,31 @@ BOOL WINAPI WinHttpReadData( HINTERNET hrequest, LPVOID buffer, DWORD to_read, L
     release_object( &request->hdr );
     return ret;
 }
+
+/***********************************************************************
+ *          WinHttpWriteData (winhttp.@)
+ */
+BOOL WINAPI WinHttpWriteData( HINTERNET hrequest, LPCVOID buffer, DWORD to_write, LPDWORD written )
+{
+    BOOL ret;
+    request_t *request;
+
+    TRACE("%p, %p, %d, %p\n", hrequest, buffer, to_write, written);
+
+    if (!(request = (request_t *)grab_object( hrequest )))
+    {
+        set_last_error( ERROR_INVALID_HANDLE );
+        return FALSE;
+    }
+    if (request->hdr.type != WINHTTP_HANDLE_TYPE_REQUEST)
+    {
+        release_object( &request->hdr );
+        set_last_error( ERROR_WINHTTP_INCORRECT_HANDLE_TYPE );
+        return FALSE;
+    }
+
+    ret = netconn_send( &request->netconn, buffer, to_write, 0, (int *)written );
+
+    release_object( &request->hdr );
+    return ret;
+}
diff --git a/dlls/winhttp/tests/winhttp.c b/dlls/winhttp/tests/winhttp.c
index fa0249d..3fbb24c 100644
--- a/dlls/winhttp/tests/winhttp.c
+++ b/dlls/winhttp/tests/winhttp.c
@@ -117,8 +117,8 @@ static void test_SendRequest (void)
     {
         bytes_rw = -1;
         ret = WinHttpWriteData(request, &post_data[i], 1, &bytes_rw);
-        todo_wine ok(ret == TRUE, "WinHttpWriteData failed: %u.\n", GetLastError());
-        todo_wine ok(bytes_rw == 1, "WinHttpWriteData failed, wrote %u bytes instead of 1 byte.\n", bytes_rw);
+        ok(ret == TRUE, "WinHttpWriteData failed: %u.\n", GetLastError());
+        ok(bytes_rw == 1, "WinHttpWriteData failed, wrote %u bytes instead of 1 byte.\n", bytes_rw);
     }
 
     ret = WinHttpReceiveResponse(request, NULL);




More information about the wine-cvs mailing list