diff --git a/server/sock.c b/server/sock.c index 7b00cb3f4f4..2b85b2889f0 100644 --- a/server/sock.c +++ b/server/sock.c @@ -2289,9 +2289,6 @@ static void sock_ioctl( struct fd *fd, ioctl_code_t code, struct async *async ) if (!send_len) return; } - if (!(req = mem_alloc( sizeof(*req) ))) - return; - sock->state = SOCK_CONNECTING; if (params->synchronous && sock->nonblocking) @@ -2301,6 +2298,9 @@ static void sock_ioctl( struct fd *fd, ioctl_code_t code, struct async *async ) return; } + if (!(req = mem_alloc( sizeof(*req) ))) + return; + req->async = (struct async *)grab_object( async ); req->iosb = async_get_iosb( async ); req->sock = (struct sock *)grab_object( sock );