summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/libcli/composite/connect.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/source4/libcli/composite/connect.c b/source4/libcli/composite/connect.c
index b1d2eb2847..d6d87380ec 100644
--- a/source4/libcli/composite/connect.c
+++ b/source4/libcli/composite/connect.c
@@ -341,17 +341,24 @@ struct composite_context *smb_composite_connect_send(struct smb_composite_connec
if (state->sock == NULL) goto failed;
state->io = io;
- state->stage = CONNECT_RESOLVE;
c->state = SMBCLI_REQUEST_SEND;
c->event_ctx = talloc_reference(c, state->sock->event.ctx);
c->private = state;
- make_nbt_name_server(&name, io->in.dest_host);
+ /* if the destination is an IP address, then skip the name resolution part */
+ if (is_ipaddress(io->in.dest_host)) {
+ state->stage = CONNECT_SOCKET;
+ state->creq = smbcli_sock_connect_send(state->sock, io->in.dest_host,
+ state->io->in.port,
+ io->in.dest_host);
+ } else {
+ state->stage = CONNECT_RESOLVE;
+ make_nbt_name_server(&name, io->in.dest_host);
+ state->creq = resolve_name_send(&name, c->event_ctx, lp_name_resolve_order());
+ }
- state->creq = resolve_name_send(&name, c->event_ctx, lp_name_resolve_order());
if (state->creq == NULL) goto failed;
-
state->creq->async.private = c;
state->creq->async.fn = composite_handler;