]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:libsmb: pass struct smb_transports to smbsock_any_connect_send()
authorStefan Metzmacher <metze@samba.org>
Sun, 6 Apr 2025 17:05:19 +0000 (19:05 +0200)
committerStefan Metzmacher <metze@samba.org>
Fri, 18 Apr 2025 10:17:29 +0000 (10:17 +0000)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
source3/include/proto.h
source3/libsmb/cliconnect.c
source3/libsmb/smbsock_connect.c

index ea8735c18674d7eaae2802bc8e3831fbfd2703be..23e30959b97702ada9610c45caf8b993e548a5bb 100644 (file)
@@ -679,7 +679,9 @@ struct tevent_req *smbsock_any_connect_send(TALLOC_CTX *mem_ctx,
                                            int *called_types,
                                            const char **calling_names,
                                            int *calling_types,
-                                           size_t num_addrs, uint16_t port);
+                                           size_t num_addrs,
+                                           const struct smb_transports *transports)
+       NONNULL(2) NONNULL(3) NONNULL(9);
 NTSTATUS smbsock_any_connect_recv(struct tevent_req *req, int *pfd,
                                  size_t *chosen_index, uint16_t *chosen_port);
 NTSTATUS smbsock_any_connect(const struct sockaddr_storage *addrs,
index bd75393ac076483cd0c1fcf62b9649fd399b79fd..bfd264b074dab6fb1942cb75c62cd4508677613a 100644 (file)
@@ -2399,6 +2399,7 @@ fail:
 }
 
 struct cli_connect_sock_state {
+       struct smb_transports transports;
        const char **called_names;
        const char **calling_names;
        int *called_types;
@@ -2430,6 +2431,7 @@ static struct tevent_req *cli_connect_sock_send(
        if (req == NULL) {
                return NULL;
        }
+       state->transports = smbsock_transports_from_port(port);
 
        if ((pss == NULL) || is_zero_addr(pss)) {
 
@@ -2473,7 +2475,7 @@ static struct tevent_req *cli_connect_sock_send(
 
        subreq = smbsock_any_connect_send(
                state, ev, addrs, state->called_names, state->called_types,
-               state->calling_names, NULL, num_addrs, port);
+               state->calling_names, NULL, num_addrs, &state->transports);
        if (tevent_req_nomem(subreq, req)) {
                return tevent_req_post(req, ev);
        }
index fd64111049d5d96a1b5567ef2f791fd02eb1d569..c327cc7566f14387bbe04ed0f58447686c7d592d 100644 (file)
@@ -818,7 +818,8 @@ struct tevent_req *smbsock_any_connect_send(TALLOC_CTX *mem_ctx,
                                            int *called_types,
                                            const char **calling_names,
                                            int *calling_types,
-                                           size_t num_addrs, uint16_t port)
+                                           size_t num_addrs,
+                                           const struct smb_transports *transports)
 {
        struct tevent_req *req, *subreq;
        struct smbsock_any_connect_state *state;
@@ -835,7 +836,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->transports = smbsock_transports_from_port(port);
+       state->transports = *transports;
        state->fd = -1;
 
        tevent_req_set_cleanup_fn(req, smbsock_any_connect_cleanup);
@@ -1037,6 +1038,7 @@ NTSTATUS smbsock_any_connect(const struct sockaddr_storage *addrs,
        TALLOC_CTX *frame = talloc_stackframe();
        struct tevent_context *ev;
        struct tevent_req *req;
+       struct smb_transports ts = smbsock_transports_from_port(port);
        NTSTATUS status = NT_STATUS_NO_MEMORY;
 
        ev = samba_tevent_context_init(frame);
@@ -1046,7 +1048,7 @@ NTSTATUS smbsock_any_connect(const struct sockaddr_storage *addrs,
        req = smbsock_any_connect_send(frame, ev, addrs,
                                       called_names, called_types,
                                       calling_names, calling_types,
-                                      num_addrs, port);
+                                      num_addrs, &ts);
        if (req == NULL) {
                goto fail;
        }