Module: wine Branch: master Commit: 6619e54d1eaf5f62115e8fa43a2db16589e47c16 URL: http://source.winehq.org/git/wine.git/?a=commit;h=6619e54d1eaf5f62115e8fa43a...
Author: Hans Leidekker hans@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);