TODO: dcerpc_pipe_open_pipe_xxx() use dcerpc_pipe_open_unix_stream_xxx()
authorGregor Beck <gbeck@sernet.de>
Wed, 2 Oct 2013 13:33:19 +0000 (15:33 +0200)
committerStefan Metzmacher <metze@samba.org>
Mon, 10 Feb 2014 08:07:29 +0000 (09:07 +0100)
source4/librpc/rpc/dcerpc_sock.c

index d9a52ded424e63a43a2857131e5098f63e466f1c..a032dbe73a9a926c0a0862482723d62afb2babbc 100644 (file)
@@ -423,39 +423,24 @@ struct composite_context* dcerpc_pipe_open_pipe_send(struct dcecli_connection *c
                                                     const char *ncalrpc_dir,
                                                     const char *identifier)
 {
-       char *canon = NULL;
+       struct composite_context *ret = NULL;
+       char *path;
 
-       struct composite_context *c;
-       struct composite_context *sock_req;
-       struct pipe_unix_state *s;
-
-       /* composite context allocation and setup */
-       c = composite_create(conn, conn->event_ctx);
-       if (c == NULL) return NULL;
-
-       s = talloc_zero(c, struct pipe_unix_state);
-       if (composite_nomem(s, c)) return c;
-       c->private_data = s;
-
-       /* store parameters in state structure */
-       canon = talloc_strdup(s, identifier);
-       if (composite_nomem(canon, c)) return c;
-       s->conn = conn;
+       path = talloc_asprintf(conn, "%s/%s", ncalrpc_dir, identifier);
+       if (path == NULL) {
+               return NULL;
+       }
 
-       string_replace(canon, '/', '\\');
-       s->path = talloc_asprintf(canon, "%s/%s", ncalrpc_dir, canon);
-       if (composite_nomem(s->path, c)) return c;
+       string_replace(path, '/', '\\');
 
-       /* prepare server address using path and transport name */
-       s->srvaddr = socket_address_from_strings(conn, "unix", s->path, 0);
-       if (composite_nomem(s->srvaddr, c)) return c;
+       ret = dcerpc_pipe_open_unix_stream_send(conn, path);
+       if (ret == NULL) {
+               TALLOC_FREE(path);
+               return NULL;
+       }
 
-       /* send socket open request */
-       sock_req = dcerpc_pipe_open_socket_send(c, s->conn, NULL,
-                                               s->srvaddr, NULL,
-                                               s->path, NCALRPC);
-       composite_continue(c, sock_req, continue_np_open_socket, c);
-       return c;
+       talloc_steal(ret, path);
+       return ret;
 }
 
 
@@ -464,10 +449,7 @@ struct composite_context* dcerpc_pipe_open_pipe_send(struct dcecli_connection *c
 */
 NTSTATUS dcerpc_pipe_open_pipe_recv(struct composite_context *c)
 {
-       NTSTATUS status = composite_wait(c);
-       
-       talloc_free(c);
-       return status;
+       return dcerpc_pipe_open_unix_stream_recv(c);
 }