From: Stefan Metzmacher Date: Sat, 5 Apr 2025 15:50:16 +0000 (+0200) Subject: s3:libsmb: pass struct smb_transports to smbsock_connect_send() X-Git-Tag: tevent-0.17.0~277 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c39b11b482b4394445056fc39d79cf5c916b053c;p=thirdparty%2Fsamba.git s3:libsmb: pass struct smb_transports to smbsock_connect_send() Signed-off-by: Stefan Metzmacher Reviewed-by: Volker Lendecke --- diff --git a/source3/include/proto.h b/source3/include/proto.h index bf14044bfaf..fd487a59ffe 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -656,11 +656,13 @@ struct smb_transports smbsock_transports_from_port(uint16_t port); struct tevent_req *smbsock_connect_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, const struct sockaddr_storage *addr, - uint16_t port, + const struct smb_transports *transports, const char *called_name, int called_type, const char *calling_name, - int calling_type); + int calling_type) + NONNULL(2) NONNULL(3) NONNULL(4); + NTSTATUS smbsock_connect_recv(struct tevent_req *req, int *sock, uint16_t *ret_port); NTSTATUS smbsock_connect(const struct sockaddr_storage *addr, uint16_t port, diff --git a/source3/libsmb/smbsock_connect.c b/source3/libsmb/smbsock_connect.c index 124ab5a7fb0..3c43c2e4241 100644 --- a/source3/libsmb/smbsock_connect.c +++ b/source3/libsmb/smbsock_connect.c @@ -397,7 +397,7 @@ static void smbsock_connect_tcp_connected(struct tevent_req *subreq); struct tevent_req *smbsock_connect_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, const struct sockaddr_storage *addr, - uint16_t port, + const struct smb_transports *transports, const char *called_name, int called_type, const char *calling_name, @@ -406,7 +406,7 @@ struct tevent_req *smbsock_connect_send(TALLOC_CTX *mem_ctx, struct tevent_req *req; struct smbsock_connect_state *state; uint8_t num_unsupported = 0; - struct smb_transports ts; + struct smb_transports ts = *transports; uint8_t ti; bool ok; @@ -428,7 +428,6 @@ struct tevent_req *smbsock_connect_send(TALLOC_CTX *mem_ctx, tevent_req_set_cleanup_fn(req, smbsock_connect_cleanup); - ts = smbsock_transports_from_port(port); SMB_ASSERT(ts.num_transports <= ARRAY_SIZE(state->substates)); for (ti = 0; ti < ts.num_transports; ti++) { @@ -760,12 +759,13 @@ NTSTATUS smbsock_connect(const struct sockaddr_storage *addr, uint16_t port, struct tevent_context *ev; struct tevent_req *req; NTSTATUS status = NT_STATUS_NO_MEMORY; + struct smb_transports ts = smbsock_transports_from_port(port); ev = samba_tevent_context_init(frame); if (ev == NULL) { goto fail; } - req = smbsock_connect_send(frame, ev, addr, port, + req = smbsock_connect_send(frame, ev, addr, &ts, called_name, called_type, calling_name, calling_type); if (req == NULL) { @@ -793,7 +793,7 @@ struct smbsock_any_connect_state { const char **calling_names; int *calling_types; size_t num_addrs; - uint16_t port; + struct smb_transports transports; struct tevent_req **requests; size_t num_sent; @@ -835,7 +835,7 @@ struct tevent_req *smbsock_any_connect_send(TALLOC_CTX *mem_ctx, state->called_types = called_types; state->calling_names = calling_names; state->calling_types = calling_types; - state->port = port; + state->transports = smbsock_transports_from_port(port); state->fd = -1; tevent_req_set_cleanup_fn(req, smbsock_any_connect_cleanup); @@ -924,7 +924,7 @@ static bool smbsock_any_connect_send_next( } subreq = smbsock_connect_send( state->requests, state->ev, &state->addrs[state->num_sent], - state->port, + &state->transports, (state->called_names != NULL) ? state->called_names[state->num_sent] : NULL, (state->called_types != NULL)