From: Stefan Metzmacher Date: Sat, 5 Apr 2025 15:50:16 +0000 (+0200) Subject: s3:libsmb: pass struct smb_transports to smbsock_connect() X-Git-Tag: tevent-0.17.0~276 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d337404876193548c6ed135450bb0b05399d6e61;p=thirdparty%2Fsamba.git s3:libsmb: pass struct smb_transports to smbsock_connect() Signed-off-by: Stefan Metzmacher Reviewed-by: Volker Lendecke --- diff --git a/source3/include/proto.h b/source3/include/proto.h index fd487a59ffe..ea8735c1867 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -665,10 +665,12 @@ struct tevent_req *smbsock_connect_send(TALLOC_CTX *mem_ctx, 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, +NTSTATUS smbsock_connect(const struct sockaddr_storage *addr, + const struct smb_transports *transports, const char *called_name, int called_type, const char *calling_name, int calling_type, - int *pfd, uint16_t *ret_port, int sec_timeout); + int *pfd, uint16_t *ret_port, int sec_timeout) + NONNULL(1) NONNULL(2) NONNULL(7); struct tevent_req *smbsock_any_connect_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, diff --git a/source3/libsmb/smbsock_connect.c b/source3/libsmb/smbsock_connect.c index 3c43c2e4241..fd64111049d 100644 --- a/source3/libsmb/smbsock_connect.c +++ b/source3/libsmb/smbsock_connect.c @@ -750,7 +750,8 @@ NTSTATUS smbsock_connect_recv(struct tevent_req *req, int *sock, return NT_STATUS_OK; } -NTSTATUS smbsock_connect(const struct sockaddr_storage *addr, uint16_t port, +NTSTATUS smbsock_connect(const struct sockaddr_storage *addr, + const struct smb_transports *transports, const char *called_name, int called_type, const char *calling_name, int calling_type, int *pfd, uint16_t *ret_port, int sec_timeout) @@ -759,13 +760,12 @@ 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, &ts, + req = smbsock_connect_send(frame, ev, addr, transports, called_name, called_type, calling_name, calling_type); if (req == NULL) { diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c index 420ea961876..dd8d2fae830 100644 --- a/source3/winbindd/winbindd_cm.c +++ b/source3/winbindd/winbindd_cm.c @@ -1440,6 +1440,9 @@ static bool connect_preferred_dc(TALLOC_CTX *mem_ctx, int *fd) { char *saf_servername = NULL; + struct smb_transports ts = + smb_transports_parse("client smb transports", + lp_client_smb_transports()); NTSTATUS status; bool ok; @@ -1507,7 +1510,7 @@ static bool connect_preferred_dc(TALLOC_CTX *mem_ctx, return false; } - status = smbsock_connect(&domain->dcaddr, 0, + status = smbsock_connect(&domain->dcaddr, &ts, domain->dcname, -1, NULL, -1, fd, NULL, 10); if (!NT_STATUS_IS_OK(status)) {