Zebediah Figura : server: Store the socket errors as an array of Unix errno values.

Alexandre Julliard julliard at winehq.org
Mon Jun 14 16:00:36 CDT 2021


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

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Mon Jun 14 00:41:48 2021 -0500

server: Store the socket errors as an array of Unix errno values.

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 server/sock.c | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/server/sock.c b/server/sock.c
index 2a22bb2340b..026188e79af 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -167,7 +167,7 @@ struct sock
     user_handle_t       window;      /* window to send the message to */
     unsigned int        message;     /* message to send */
     obj_handle_t        wparam;      /* message wparam (socket handle) */
-    unsigned int        errors[AFD_POLL_BIT_COUNT]; /* event errors */
+    int                 errors[AFD_POLL_BIT_COUNT]; /* event errors */
     timeout_t           connect_time;/* time the socket was connected */
     struct sock        *deferred;    /* socket that waits for a deferred accept */
     struct async_queue  read_q;      /* queue for asynchronous reads */
@@ -486,7 +486,7 @@ static void sock_wake_up( struct sock *sock )
             enum afd_poll_bit event = event_bitorder[i];
             if (events & (1 << event))
             {
-                lparam_t lparam = afd_poll_flag_to_win32(1 << event) | (sock->errors[event] << 16);
+                lparam_t lparam = afd_poll_flag_to_win32(1 << event) | (sock_get_error( sock->errors[event] ) << 16);
                 post_message( sock->window, sock->message, sock->wparam, lparam );
             }
         }
@@ -851,7 +851,7 @@ static int sock_dispatch_asyncs( struct sock *sock, int event, int error )
     return event;
 }
 
-static void post_socket_event( struct sock *sock, enum afd_poll_bit event_bit, unsigned int error )
+static void post_socket_event( struct sock *sock, enum afd_poll_bit event_bit, int error )
 {
     unsigned int event = (1 << event_bit);
 
@@ -874,12 +874,12 @@ static void sock_dispatch_events( struct sock *sock, enum connection_state prevs
         if (event & POLLOUT)
             post_socket_event( sock, AFD_POLL_BIT_CONNECT, 0 );
         if (event & (POLLERR | POLLHUP))
-            post_socket_event( sock, AFD_POLL_BIT_CONNECT_ERR, sock_get_error( error ) );
+            post_socket_event( sock, AFD_POLL_BIT_CONNECT_ERR, error );
         break;
 
     case SOCK_LISTENING:
         if (event & (POLLIN | POLLERR | POLLHUP))
-            post_socket_event( sock, AFD_POLL_BIT_ACCEPT, sock_get_error( error ) );
+            post_socket_event( sock, AFD_POLL_BIT_ACCEPT, error );
         break;
 
     case SOCK_CONNECTED:
@@ -894,7 +894,7 @@ static void sock_dispatch_events( struct sock *sock, enum connection_state prevs
             post_socket_event( sock, AFD_POLL_BIT_OOB, 0 );
 
         if (event & (POLLERR | POLLHUP))
-            post_socket_event( sock, AFD_POLL_BIT_HUP, sock_get_error( error ) );
+            post_socket_event( sock, AFD_POLL_BIT_HUP, error );
         break;
     }
 
@@ -2457,13 +2457,13 @@ DECL_HANDLER(get_socket_event)
     reply->mask  = afd_poll_flag_to_win32( sock->mask );
     reply->pmask = afd_poll_flag_to_win32( sock->pending_events );
 
-    errors[FD_READ_BIT]     = sock->errors[AFD_POLL_BIT_READ];
-    errors[FD_WRITE_BIT]    = sock->errors[AFD_POLL_BIT_WRITE];
-    errors[FD_OOB_BIT]      = sock->errors[AFD_POLL_BIT_OOB];
-    errors[FD_ACCEPT_BIT]   = sock->errors[AFD_POLL_BIT_ACCEPT];
-    errors[FD_CONNECT_BIT]  = sock->errors[AFD_POLL_BIT_CONNECT_ERR];
-    if (!(errors[FD_CLOSE_BIT] = sock->errors[AFD_POLL_BIT_HUP]))
-        errors[FD_CLOSE_BIT] = sock->errors[AFD_POLL_BIT_RESET];
+    errors[FD_READ_BIT]     = sock_get_error( sock->errors[AFD_POLL_BIT_READ] );
+    errors[FD_WRITE_BIT]    = sock_get_error( sock->errors[AFD_POLL_BIT_WRITE] );
+    errors[FD_OOB_BIT]      = sock_get_error( sock->errors[AFD_POLL_BIT_OOB] );
+    errors[FD_ACCEPT_BIT]   = sock_get_error( sock->errors[AFD_POLL_BIT_ACCEPT] );
+    errors[FD_CONNECT_BIT]  = sock_get_error( sock->errors[AFD_POLL_BIT_CONNECT_ERR] );
+    if (!(errors[FD_CLOSE_BIT] = sock_get_error( sock->errors[AFD_POLL_BIT_HUP] )))
+        errors[FD_CLOSE_BIT] = sock_get_error( sock->errors[AFD_POLL_BIT_RESET] );
     set_reply_data( errors, min( get_reply_max_size(), sizeof(errors) ));
 
     if (req->service)




More information about the wine-cvs mailing list