Hans Leidekker : winhttp: Implement WinHttpWebSocketQueryCloseStatus.
Alexandre Julliard
julliard at winehq.org
Wed Jun 24 15:47:35 CDT 2020
Module: wine
Branch: master
Commit: 3b1d18fd6e61e5d27bc2b45c92bae58874626908
URL: https://source.winehq.org/git/wine.git/?a=commit;h=3b1d18fd6e61e5d27bc2b45c92bae58874626908
Author: Hans Leidekker <hans at codeweavers.com>
Date: Wed Jun 24 10:33:07 2020 +0200
winhttp: Implement WinHttpWebSocketQueryCloseStatus.
Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/winhttp/request.c | 34 +++++++++++++++++++++++++++++++---
1 file changed, 31 insertions(+), 3 deletions(-)
diff --git a/dlls/winhttp/request.c b/dlls/winhttp/request.c
index 60a9585d0d..631fbb004f 100644
--- a/dlls/winhttp/request.c
+++ b/dlls/winhttp/request.c
@@ -3642,10 +3642,38 @@ DWORD WINAPI WinHttpWebSocketClose( HINTERNET hsocket, USHORT status, void *reas
}
DWORD WINAPI WinHttpWebSocketQueryCloseStatus( HINTERNET hsocket, USHORT *status, void *reason, DWORD len,
- DWORD *consumed )
+ DWORD *ret_len )
{
- FIXME("%p, %p, %p, %u, %p\n", hsocket, status, reason, len, consumed);
- return ERROR_INVALID_PARAMETER;
+ struct socket *socket;
+ DWORD ret;
+
+ TRACE("%p, %p, %p, %u, %p\n", hsocket, status, reason, len, ret_len);
+
+ if (!status || (len && !reason) || !ret_len) return ERROR_INVALID_PARAMETER;
+
+ if (!(socket = (struct socket *)grab_object( hsocket ))) return ERROR_INVALID_HANDLE;
+ if (socket->hdr.type != WINHTTP_HANDLE_TYPE_SOCKET)
+ {
+ release_object( &socket->hdr );
+ return ERROR_WINHTTP_INCORRECT_HANDLE_TYPE;
+ }
+ if (socket->state < SOCKET_STATE_CLOSED)
+ {
+ release_object( &socket->hdr );
+ return ERROR_WINHTTP_INCORRECT_HANDLE_STATE;
+ }
+
+ *status = socket->status;
+ *ret_len = socket->reason_len;
+ if (socket->reason_len > len) ret = ERROR_INSUFFICIENT_BUFFER;
+ else
+ {
+ memcpy( reason, socket->reason, socket->reason_len );
+ ret = ERROR_SUCCESS;
+ }
+
+ release_object( &socket->hdr );
+ return ret;
}
enum request_state
More information about the wine-cvs
mailing list