From: Stefan Metzmacher Date: Wed, 21 Jun 2017 14:02:20 +0000 (+0200) Subject: TODO NOT NEEDED cli_connect_sock_send/recv return sock_storage X-Git-Url: http://git.samba.org/?a=commitdiff_plain;h=a79bb1b0d625f52be3b61f97b5f7fe3140673f90;hp=26c4d9b07a5ce9d2ca73c19796e06f76745cb2cf;p=metze%2Fsamba%2Fwip.git TODO NOT NEEDED cli_connect_sock_send/recv return sock_storage --- diff --git a/source3/libsmb/cliconnect.c b/source3/libsmb/cliconnect.c index fcc8e0b67b8a..f612dc2d53af 100644 --- a/source3/libsmb/cliconnect.c +++ b/source3/libsmb/cliconnect.c @@ -2548,9 +2548,12 @@ fail: } struct cli_connect_sock_state { + struct sockaddr_storage *addrs; + size_t num_addrs; const char **called_names; const char **calling_names; int *called_types; + size_t chosen_index; int fd; uint16_t port; }; @@ -2570,7 +2573,7 @@ static struct tevent_req *cli_connect_sock_send( struct tevent_req *req, *subreq; struct cli_connect_sock_state *state; struct sockaddr_storage *addrs; - unsigned i, num_addrs; + size_t i; NTSTATUS status; req = tevent_req_create(mem_ctx, &state, @@ -2588,18 +2591,18 @@ static struct tevent_req *cli_connect_sock_send( */ status = resolve_name_list(state, host, name_type, - &addrs, &num_addrs); + &state->addrs, &state->num_addrs); if (!NT_STATUS_IS_OK(status)) { tevent_req_nterror(req, status); return tevent_req_post(req, ev); } } else { - addrs = talloc_array(state, struct sockaddr_storage, 1); - if (tevent_req_nomem(addrs, req)) { + state->addrs = talloc_array(state, struct sockaddr_storage, 1); + if (tevent_req_nomem(state->addrs, req)) { return tevent_req_post(req, ev); } - addrs[0] = *pss; - num_addrs = 1; + state->addrs[0] = *pss; + state->num_addrs = 1; } state->called_names = talloc_array(state, const char *, num_addrs); @@ -2614,15 +2617,16 @@ static struct tevent_req *cli_connect_sock_send( if (tevent_req_nomem(state->calling_names, req)) { return tevent_req_post(req, ev); } - for (i=0; inum_addrs; i++) { state->called_names[i] = host; state->called_types[i] = name_type; state->calling_names[i] = myname; } subreq = smbsock_any_connect_send( - state, ev, addrs, state->called_names, state->called_types, - state->calling_names, NULL, num_addrs, port); + state, ev, state->addrs, + state->called_names, state->called_types, state->calling_names, + NULL, state->num_addrs, port); if (tevent_req_nomem(subreq, req)) { return tevent_req_post(req, ev); } @@ -2638,7 +2642,8 @@ static void cli_connect_sock_done(struct tevent_req *subreq) req, struct cli_connect_sock_state); NTSTATUS status; - status = smbsock_any_connect_recv(subreq, &state->fd, NULL, + status = smbsock_any_connect_recv(subreq, &state->fd, + &state->chosen_index, &state->port); TALLOC_FREE(subreq); if (tevent_req_nterror(req, status)) { @@ -2649,7 +2654,9 @@ static void cli_connect_sock_done(struct tevent_req *subreq) } static NTSTATUS cli_connect_sock_recv(struct tevent_req *req, - int *pfd, uint16_t *pport) + int *pfd, + struct sockaddr_storage *pss, + uint16_t *pport) { struct cli_connect_sock_state *state = tevent_req_data( req, struct cli_connect_sock_state); @@ -2659,6 +2666,7 @@ static NTSTATUS cli_connect_sock_recv(struct tevent_req *req, return status; } *pfd = state->fd; + *pss = state->addrs[state->chosen_index]; *pport = state->port; return NT_STATUS_OK; }