From: Stefan Metzmacher Date: Tue, 8 Apr 2025 14:21:04 +0000 (+0200) Subject: s4:libcli: simplify struct smbcli_socket X-Git-Tag: tevent-0.17.0~251 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=228f2a9bd8aec150387c1bc4ba913651f769da91;p=thirdparty%2Fsamba.git s4:libcli: simplify struct smbcli_socket Signed-off-by: Stefan Metzmacher Reviewed-by: Volker Lendecke --- diff --git a/source4/libcli/raw/clisocket.c b/source4/libcli/raw/clisocket.c index f2a1aaaec0c..dc04a829bab 100644 --- a/source4/libcli/raw/clisocket.c +++ b/source4/libcli/raw/clisocket.c @@ -406,6 +406,16 @@ failed: return NULL; } +static int smbcli_socket_destructor(struct smbcli_socket *sock) +{ + if (sock->sockfd != -1) { + close(sock->sockfd); + sock->sockfd = -1; + } + + return 0; +} + static void smbcli_sock_connect_recv_conn(struct composite_context *ctx) { struct sock_connect_state *state = @@ -426,10 +436,13 @@ static void smbcli_sock_connect_recv_conn(struct composite_context *ctx) state->result = talloc_zero(state, struct smbcli_socket); if (composite_nomem(state->result, state->ctx)) return; - state->result->sock = talloc_steal(state->result, sock); - state->result->port = port; + state->result->sockfd = sock->fd; + sock->fd = -1; + TALLOC_FREE(sock); state->result->hostname = talloc_steal(state->result, state->host_name); + talloc_set_destructor(state->result, smbcli_socket_destructor); + state->result->event.ctx = state->ctx->event_ctx; if (composite_nomem(state->result->event.ctx, state->ctx)) return; diff --git a/source4/libcli/raw/clitransport.c b/source4/libcli/raw/clitransport.c index 04761d62cf2..99c78976507 100644 --- a/source4/libcli/raw/clitransport.c +++ b/source4/libcli/raw/clitransport.c @@ -66,9 +66,6 @@ struct smbcli_transport *smbcli_transport_init(struct smbcli_socket *sock, transport->options.max_protocol = PROTOCOL_NT1; } - TALLOC_FREE(sock->event.fde); - TALLOC_FREE(sock->event.te); - smb1_capabilities = 0; smb1_capabilities |= CAP_LARGE_FILES; smb1_capabilities |= CAP_NT_SMBS | CAP_RPC_REMOTE_APIS; @@ -94,7 +91,7 @@ struct smbcli_transport *smbcli_transport_init(struct smbcli_socket *sock, } transport->conn = smbXcli_conn_create(transport, - sock->sock->fd, + sock->sockfd, sock->hostname, options->signing, smb1_capabilities, @@ -106,7 +103,7 @@ struct smbcli_transport *smbcli_transport_init(struct smbcli_socket *sock, TALLOC_FREE(transport); return NULL; } - sock->sock->fd = -1; + sock->sockfd = -1; TALLOC_FREE(sock); talloc_set_destructor(transport, transport_destructor); diff --git a/source4/libcli/raw/libcliraw.h b/source4/libcli/raw/libcliraw.h index ff4f1796f6d..a8c2891b08c 100644 --- a/source4/libcli/raw/libcliraw.h +++ b/source4/libcli/raw/libcliraw.h @@ -70,10 +70,7 @@ struct smbcli_negotiate { /* this is the context for a SMB socket associated with the socket itself */ struct smbcli_socket { - struct socket_context *sock; - - /* what port we ended up connected to */ - int port; + int sockfd; /* the hostname we connected to */ const char *hostname; @@ -81,8 +78,6 @@ struct smbcli_socket { /* the event handle for waiting for socket IO */ struct { struct tevent_context *ctx; - struct tevent_fd *fde; - struct tevent_timer *te; } event; }; diff --git a/source4/libcli/smb2/transport.c b/source4/libcli/smb2/transport.c index 292ca0f4afd..15d173c6c4d 100644 --- a/source4/libcli/smb2/transport.c +++ b/source4/libcli/smb2/transport.c @@ -63,11 +63,8 @@ struct smb2_transport *smb2_transport_init(struct smbcli_socket *sock, transport->options.max_protocol = PROTOCOL_LATEST; } - TALLOC_FREE(sock->event.fde); - TALLOC_FREE(sock->event.te); - transport->conn = smbXcli_conn_create(transport, - sock->sock->fd, + sock->sockfd, sock->hostname, options->signing, 0, /* smb1_capabilities */ @@ -78,7 +75,7 @@ struct smb2_transport *smb2_transport_init(struct smbcli_socket *sock, talloc_free(transport); return NULL; } - sock->sock->fd = -1; + sock->sockfd = -1; TALLOC_FREE(sock); talloc_set_destructor(transport, transport_destructor); diff --git a/source4/libcli/smb_composite/connect_nego.c b/source4/libcli/smb_composite/connect_nego.c index 47109ae7314..f146f37c534 100644 --- a/source4/libcli/smb_composite/connect_nego.c +++ b/source4/libcli/smb_composite/connect_nego.c @@ -117,9 +117,6 @@ static void smb_connect_nego_connect_done(struct composite_context *creq) return; } - TALLOC_FREE(sock->event.fde); - TALLOC_FREE(sock->event.te); - smb1_capabilities = 0; smb1_capabilities |= CAP_LARGE_FILES; smb1_capabilities |= CAP_NT_SMBS | CAP_RPC_REMOTE_APIS; @@ -145,7 +142,7 @@ static void smb_connect_nego_connect_done(struct composite_context *creq) } state->conn = smbXcli_conn_create(state, - sock->sock->fd, + sock->sockfd, state->target_hostname, state->options.signing, smb1_capabilities, @@ -155,7 +152,7 @@ static void smb_connect_nego_connect_done(struct composite_context *creq) if (tevent_req_nomem(state->conn, req)) { return; } - sock->sock->fd = -1; + sock->sockfd = -1; TALLOC_FREE(sock); subreq = smbXcli_negprot_send(state,