summaryrefslogtreecommitdiff
path: root/source4/lib/socket/connect_multi.c
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2007-12-07 16:04:17 +0100
committerStefan Metzmacher <metze@samba.org>2007-12-21 05:48:46 +0100
commit01d2acfdb4c4c0349a28a18c5c0da5b960b02791 (patch)
tree7a8ae7ae55fa531212d67275f8ebfb8e9c74a205 /source4/lib/socket/connect_multi.c
parent0b4fab2f6047f03221314f82229647d6662464e0 (diff)
downloadsamba-01d2acfdb4c4c0349a28a18c5c0da5b960b02791.tar.gz
samba-01d2acfdb4c4c0349a28a18c5c0da5b960b02791.tar.bz2
samba-01d2acfdb4c4c0349a28a18c5c0da5b960b02791.zip
r26335: Specify name_resolve_order to socket code.
(This used to be commit b03e5d00110be3f1fe5809dad4eb6ca5cea7463d)
Diffstat (limited to 'source4/lib/socket/connect_multi.c')
-rw-r--r--source4/lib/socket/connect_multi.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/source4/lib/socket/connect_multi.c b/source4/lib/socket/connect_multi.c
index 6d30141459..58ab673965 100644
--- a/source4/lib/socket/connect_multi.c
+++ b/source4/lib/socket/connect_multi.c
@@ -38,6 +38,8 @@ struct connect_multi_state {
int num_ports;
uint16_t *ports;
+ const char **name_resolve_order;
+
struct socket_context *sock;
uint16_t result_port;
@@ -68,6 +70,7 @@ _PUBLIC_ struct composite_context *socket_connect_multi_send(
const char *server_address,
int num_server_ports,
uint16_t *server_ports,
+ const char **name_resolve_order,
struct event_context *event_ctx)
{
struct composite_context *result;
@@ -87,6 +90,7 @@ _PUBLIC_ struct composite_context *socket_connect_multi_send(
if (composite_nomem(multi->server_address, result)) goto failed;
multi->num_ports = num_server_ports;
+ multi->name_resolve_order = str_list_copy(multi, name_resolve_order);
multi->ports = talloc_array(multi, uint16_t, multi->num_ports);
if (composite_nomem(multi->ports, result)) goto failed;
@@ -104,7 +108,7 @@ _PUBLIC_ struct composite_context *socket_connect_multi_send(
struct composite_context *creq;
make_nbt_name_client(&name, server_address);
creq = resolve_name_send(&name, result->event_ctx,
- lp_name_resolve_order(global_loadparm));
+ name_resolve_order);
if (composite_nomem(creq, result)) goto failed;
composite_continue(result, creq, continue_resolve_name, result);
return result;
@@ -157,7 +161,8 @@ static void connect_multi_next_socket(struct composite_context *result)
talloc_steal(state, state->sock);
creq = socket_connect_send(state->sock, NULL,
- state->addr, 0, result->event_ctx);
+ state->addr, 0, multi->name_resolve_order,
+ result->event_ctx);
if (composite_nomem(creq, result)) return;
talloc_steal(state, creq);
@@ -264,6 +269,7 @@ _PUBLIC_ NTSTATUS socket_connect_multi_recv(struct composite_context *ctx,
NTSTATUS socket_connect_multi(TALLOC_CTX *mem_ctx,
const char *server_address,
int num_server_ports, uint16_t *server_ports,
+ const char **name_resolve_order,
struct event_context *event_ctx,
struct socket_context **result,
uint16_t *result_port)
@@ -271,6 +277,7 @@ NTSTATUS socket_connect_multi(TALLOC_CTX *mem_ctx,
struct composite_context *ctx =
socket_connect_multi_send(mem_ctx, server_address,
num_server_ports, server_ports,
+ name_resolve_order,
event_ctx);
return socket_connect_multi_recv(ctx, mem_ctx, result, result_port);
}