build: commit all the waf build files in the tree
[nivanova/samba-autobuild/.git] / source4 / lib / socket / connect.c
index dd2440b0a81b1b3cdc73149b65325ef418477693..b943de8c1448d6a76a9af74614bbf85edc3b9d18 100644 (file)
@@ -25,7 +25,6 @@
 #include "lib/socket/socket.h"
 #include "lib/events/events.h"
 #include "libcli/composite/composite.h"
-#include "libcli/resolve/resolve.h"
 
 
 struct connect_state {
@@ -35,29 +34,19 @@ struct connect_state {
        uint32_t flags;
 };
 
-static void socket_connect_handler(struct event_context *ev,
-                                  struct fd_event *fde, 
-                                  uint16_t flags, void *private);
-static void continue_resolve_name(struct composite_context *ctx);
-static void continue_socket_connect(struct composite_context *creq);
+static void socket_connect_handler(struct tevent_context *ev,
+                                  struct tevent_fd *fde, 
+                                  uint16_t flags, void *private_data);
 
 /*
   call the real socket_connect() call, and setup event handler
 */
 static void socket_send_connect(struct composite_context *result)
 {
-       struct composite_context *creq;
-       struct fd_event *fde;
+       struct tevent_fd *fde;
        struct connect_state *state = talloc_get_type(result->private_data, 
                                                      struct connect_state);
 
-       creq = talloc_zero(state, struct composite_context);
-       if (composite_nomem(creq, result)) return;
-       creq->state = COMPOSITE_STATE_IN_PROGRESS;
-       creq->event_ctx = result->event_ctx;
-       creq->async.fn = continue_socket_connect;
-       creq->async.private_data = result;
-
        result->status = socket_connect(state->sock,
                                        state->my_address,
                                        state->server_address,
@@ -84,15 +73,13 @@ struct composite_context *socket_connect_send(struct socket_context *sock,
                                              struct socket_address *my_address,
                                              struct socket_address *server_address, 
                                              uint32_t flags,
-                                             struct event_context *event_ctx)
+                                             struct tevent_context *event_ctx)
 {
        struct composite_context *result;
        struct connect_state *state;
 
-       result = talloc_zero(sock, struct composite_context);
+       result = composite_create(sock, event_ctx);
        if (result == NULL) return NULL;
-       result->state = COMPOSITE_STATE_IN_PROGRESS;
-       result->event_ctx = event_ctx;
 
        state = talloc_zero(result, struct connect_state);
        if (composite_nomem(state, result)) return result;
@@ -119,18 +106,7 @@ struct composite_context *socket_connect_send(struct socket_context *sock,
 
        state->flags = flags;
 
-       set_blocking(socket_get_fd(sock), False);
-
-       if (server_address->addr && strcmp(sock->backend_name, "ipv4") == 0) {
-               struct nbt_name name;
-               struct composite_context *creq;
-               make_nbt_name_client(&name, server_address->addr);
-               creq = resolve_name_send(&name, result->event_ctx,
-                                        lp_name_resolve_order());
-               if (composite_nomem(creq, result)) return result;
-               composite_continue(result, creq, continue_resolve_name, result);
-               return result;
-       }
+       set_blocking(socket_get_fd(sock), false);
 
        socket_send_connect(result);
 
@@ -140,12 +116,12 @@ struct composite_context *socket_connect_send(struct socket_context *sock,
 /*
   handle write events on connect completion
 */
-static void socket_connect_handler(struct event_context *ev,
-                                  struct fd_event *fde, 
-                                  uint16_t flags, void *private)
+static void socket_connect_handler(struct tevent_context *ev,
+                                  struct tevent_fd *fde, 
+                                  uint16_t flags, void *private_data)
 {
        struct composite_context *result =
-               talloc_get_type(private, struct composite_context);
+               talloc_get_type(private_data, struct composite_context);
        struct connect_state *state = talloc_get_type(result->private_data,
                                                      struct connect_state);
 
@@ -155,39 +131,6 @@ static void socket_connect_handler(struct event_context *ev,
        composite_done(result);
 }
 
-/*
-  recv name resolution reply then send the connect
-*/
-static void continue_resolve_name(struct composite_context *creq)
-{
-       struct composite_context *result = talloc_get_type(creq->async.private_data, 
-                                                          struct composite_context);
-       struct connect_state *state = talloc_get_type(result->private_data, struct connect_state);
-       const char *addr;
-
-       result->status = resolve_name_recv(creq, state, &addr);
-       if (!composite_is_ok(result)) return;
-
-       state->server_address = socket_address_from_strings(state, state->sock->backend_name,
-                                                           addr, state->server_address->port);
-       if (composite_nomem(state->server_address, result)) return;
-
-       socket_send_connect(result);
-}
-
-/*
-  called when a connect has finished. Complete the top level composite context
-*/
-static void continue_socket_connect(struct composite_context *creq)
-{
-       struct composite_context *result = talloc_get_type(creq->async.private_data, 
-                                                          struct composite_context);
-       result->status = creq->status;
-       if (!composite_is_ok(result)) return;
-       composite_done(result);
-}
-
-
 /*
   wait for a socket_connect_send() to finish
 */
@@ -205,7 +148,8 @@ NTSTATUS socket_connect_recv(struct composite_context *result)
 NTSTATUS socket_connect_ev(struct socket_context *sock,
                           struct socket_address *my_address,
                           struct socket_address *server_address, 
-                          uint32_t flags, struct event_context *ev)
+                          uint32_t flags,
+                          struct tevent_context *ev)
 {
        struct composite_context *ctx;
        ctx = socket_connect_send(sock, my_address,