diff --git a/dlls/winsock/socket.c b/dlls/winsock/socket.c index e83e747a1ac..e67363ba017 100644 --- a/dlls/winsock/socket.c +++ b/dlls/winsock/socket.c @@ -1592,9 +1592,9 @@ SOCKET WINAPI WS_accept(SOCKET s, struct WS_sockaddr *addr, } SERVER_START_REQ( accept_socket ) { - req->lhandle = SOCKET2HANDLE(s); - req->access = GENERIC_READ|GENERIC_WRITE|SYNCHRONIZE; - req->inherit = TRUE; + req->lhandle = SOCKET2HANDLE(s); + req->access = GENERIC_READ|GENERIC_WRITE|SYNCHRONIZE; + req->attributes = OBJ_INHERIT; set_error( wine_server_call( req ) ); as = HANDLE2SOCKET( reply->handle ); } @@ -3513,12 +3513,12 @@ SOCKET WINAPI WSASocketW(int af, int type, int protocol, SERVER_START_REQ( create_socket ) { - req->family = af; - req->type = type; - req->protocol = protocol; - req->access = GENERIC_READ|GENERIC_WRITE|SYNCHRONIZE; - req->flags = dwFlags; - req->inherit = TRUE; + req->family = af; + req->type = type; + req->protocol = protocol; + req->access = GENERIC_READ|GENERIC_WRITE|SYNCHRONIZE; + req->attributes = OBJ_INHERIT; + req->flags = dwFlags; set_error( wine_server_call( req ) ); ret = HANDLE2SOCKET( reply->handle ); } diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h index b81cc6cc6df..359affaccda 100644 --- a/include/wine/server_protocol.h +++ b/include/wine/server_protocol.h @@ -885,7 +885,7 @@ struct create_socket_request { struct request_header __header; unsigned int access; - int inherit; + unsigned int attributes; int family; int type; int protocol; @@ -904,7 +904,7 @@ struct accept_socket_request struct request_header __header; obj_handle_t lhandle; unsigned int access; - int inherit; + unsigned int attributes; }; struct accept_socket_reply { @@ -4316,6 +4316,6 @@ union generic_reply struct query_symlink_reply query_symlink_reply; }; -#define SERVER_PROTOCOL_VERSION 207 +#define SERVER_PROTOCOL_VERSION 208 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */ diff --git a/server/protocol.def b/server/protocol.def index dc302b03ffa..bbb842e3f4e 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -679,7 +679,7 @@ enum event_op { PULSE_EVENT, SET_EVENT, RESET_EVENT }; /* Create a socket */ @REQ(create_socket) unsigned int access; /* wanted access rights */ - int inherit; /* inherit flag */ + unsigned int attributes; /* object attributes */ int family; /* family, see socket manpage */ int type; /* type, see socket manpage */ int protocol; /* protocol, see socket manpage */ @@ -693,7 +693,7 @@ enum event_op { PULSE_EVENT, SET_EVENT, RESET_EVENT }; @REQ(accept_socket) obj_handle_t lhandle; /* handle to the listening socket */ unsigned int access; /* wanted access rights */ - int inherit; /* inherit flag */ + unsigned int attributes; /* object attributes */ @REPLY obj_handle_t handle; /* handle to the new socket */ @END diff --git a/server/sock.c b/server/sock.c index 62f39e59bd5..6e2acbb1701 100644 --- a/server/sock.c +++ b/server/sock.c @@ -773,7 +773,8 @@ DECL_HANDLER(create_socket) reply->handle = 0; if ((obj = create_socket( req->family, req->type, req->protocol, req->flags )) != NULL) { - reply->handle = alloc_handle( current->process, obj, req->access, req->inherit ); + reply->handle = alloc_handle( current->process, obj, req->access, + req->attributes & OBJ_INHERIT ); release_object( obj ); } } @@ -786,7 +787,8 @@ DECL_HANDLER(accept_socket) reply->handle = 0; if ((sock = accept_socket( req->lhandle )) != NULL) { - reply->handle = alloc_handle( current->process, &sock->obj, req->access, req->inherit ); + reply->handle = alloc_handle( current->process, &sock->obj, req->access, + req->attributes & OBJ_INHERIT ); sock->wparam = reply->handle; /* wparam for message is the socket handle */ sock_reselect( sock ); release_object( &sock->obj ); diff --git a/server/trace.c b/server/trace.c index 53199122619..eeb4e76c27f 100644 --- a/server/trace.c +++ b/server/trace.c @@ -1103,7 +1103,7 @@ static void dump_unmount_device_request( const struct unmount_device_request *re static void dump_create_socket_request( const struct create_socket_request *req ) { fprintf( stderr, " access=%08x,", req->access ); - fprintf( stderr, " inherit=%d,", req->inherit ); + fprintf( stderr, " attributes=%08x,", req->attributes ); fprintf( stderr, " family=%d,", req->family ); fprintf( stderr, " type=%d,", req->type ); fprintf( stderr, " protocol=%d,", req->protocol ); @@ -1119,7 +1119,7 @@ static void dump_accept_socket_request( const struct accept_socket_request *req { fprintf( stderr, " lhandle=%p,", req->lhandle ); fprintf( stderr, " access=%08x,", req->access ); - fprintf( stderr, " inherit=%d", req->inherit ); + fprintf( stderr, " attributes=%08x", req->attributes ); } static void dump_accept_socket_reply( const struct accept_socket_reply *req )