Paul Gofman : winhttp: Factor out socket_close_complete() function.

Alexandre Julliard julliard at winehq.org
Fri Jan 28 14:29:32 CST 2022


Module: wine
Branch: master
Commit: 1c9ea6cd94ba3219ae6d368fdcd9a4d7d11550ba
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=1c9ea6cd94ba3219ae6d368fdcd9a4d7d11550ba

Author: Paul Gofman <pgofman at codeweavers.com>
Date:   Fri Jan 28 02:06:28 2022 +0300

winhttp: Factor out socket_close_complete() function.

Signed-off-by: Paul Gofman <pgofman at codeweavers.com>
Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/winhttp/request.c | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/dlls/winhttp/request.c b/dlls/winhttp/request.c
index 8e13e678e22..5568f04d0d0 100644
--- a/dlls/winhttp/request.c
+++ b/dlls/winhttp/request.c
@@ -3886,24 +3886,29 @@ static DWORD socket_close( struct socket *socket )
     return receive_close_status( socket, count );
 }
 
-static void CALLBACK task_socket_close( TP_CALLBACK_INSTANCE *instance, void *ctx, TP_WORK *work )
+static void socket_close_complete( struct socket *socket, DWORD ret )
 {
-    struct socket_shutdown *s = ctx;
-    DWORD ret;
-
-    ret = socket_close( s->socket );
-
-    if (!ret) send_callback( &s->socket->hdr, WINHTTP_CALLBACK_STATUS_CLOSE_COMPLETE, NULL, 0 );
+    if (!ret) send_callback( &socket->hdr, WINHTTP_CALLBACK_STATUS_CLOSE_COMPLETE, NULL, 0 );
     else
     {
         WINHTTP_WEB_SOCKET_ASYNC_RESULT result;
         result.AsyncResult.dwResult = API_READ_DATA; /* FIXME */
         result.AsyncResult.dwError  = ret;
         result.Operation = WINHTTP_WEB_SOCKET_CLOSE_OPERATION;
-        send_callback( &s->socket->hdr, WINHTTP_CALLBACK_STATUS_REQUEST_ERROR, &result, sizeof(result) );
+        send_callback( &socket->hdr, WINHTTP_CALLBACK_STATUS_REQUEST_ERROR, &result, sizeof(result) );
     }
+}
+
+static void CALLBACK task_socket_close( TP_CALLBACK_INSTANCE *instance, void *ctx, TP_WORK *work )
+{
+    struct socket_shutdown *s = ctx;
+    DWORD ret;
 
     TRACE("running %p\n", work);
+
+    ret = socket_close( s->socket );
+    socket_close_complete( s->socket, ret );
+
     release_object( &s->socket->hdr );
     free( s );
 }




More information about the wine-cvs mailing list