uint16_t flags,
void *private_data);
-bool setup_named_pipe_socket(const char *pipe_name,
- struct tevent_context *ev_ctx,
- struct messaging_context *msg_ctx)
+int create_named_pipe_socket(const char *pipe_name)
{
- struct dcerpc_ncacn_listen_state *state;
- struct tevent_fd *fde;
- char *np_dir;
-
- state = talloc(ev_ctx, struct dcerpc_ncacn_listen_state);
- if (!state) {
- DEBUG(0, ("Out of memory\n"));
- return false;
- }
- state->ep.name = talloc_strdup(state, pipe_name);
- if (state->ep.name == NULL) {
- DEBUG(0, ("Out of memory\n"));
- goto out;
- }
- state->fd = -1;
-
- state->ev_ctx = ev_ctx;
- state->msg_ctx = msg_ctx;
+ char *np_dir = NULL;
+ int fd = -1;
/*
* As lp_ncalrpc_dir() should have 0755, but
goto out;
}
- np_dir = talloc_asprintf(state, "%s/np", lp_ncalrpc_dir());
+ np_dir = talloc_asprintf(talloc_tos(), "%s/np", lp_ncalrpc_dir());
if (!np_dir) {
DEBUG(0, ("Out of memory\n"));
goto out;
goto out;
}
- state->fd = create_pipe_sock(np_dir, pipe_name, 0700);
- if (state->fd == -1) {
+ fd = create_pipe_sock(np_dir, pipe_name, 0700);
+ if (fd == -1) {
DEBUG(0, ("Failed to create pipe socket! [%s/%s]\n",
np_dir, pipe_name));
goto out;
}
+
+ DEBUG(10, ("Openened pipe socket fd %d for %s\n", fd, pipe_name));
+
+out:
talloc_free(np_dir);
+ return fd;
+}
+
+bool setup_named_pipe_socket(const char *pipe_name,
+ struct tevent_context *ev_ctx,
+ struct messaging_context *msg_ctx)
+{
+ struct dcerpc_ncacn_listen_state *state;
+ struct tevent_fd *fde;
+
+ state = talloc(ev_ctx, struct dcerpc_ncacn_listen_state);
+ if (!state) {
+ DEBUG(0, ("Out of memory\n"));
+ return false;
+ }
+ state->ep.name = talloc_strdup(state, pipe_name);
+ if (state->ep.name == NULL) {
+ DEBUG(0, ("Out of memory\n"));
+ goto out;
+ }
+ state->fd = create_named_pipe_socket(pipe_name);
+ if (state->fd == -1) {
+ goto out;
+ }
+
+ state->ev_ctx = ev_ctx;
+ state->msg_ctx = msg_ctx;
DEBUG(10, ("Openened pipe socket fd %d for %s\n",
state->fd, pipe_name));
return false;
}
-static void named_pipe_accept_function(struct tevent_context *ev_ctx,
- struct messaging_context *msg_ctx,
- const char *pipe_name,
- int fd);
-
static void named_pipe_listener(struct tevent_context *ev,
struct tevent_fd *fde,
uint16_t flags,
static void named_pipe_accept_done(struct tevent_req *subreq);
-static void named_pipe_accept_function(struct tevent_context *ev_ctx,
- struct messaging_context *msg_ctx,
- const char *pipe_name,
- int fd)
+void named_pipe_accept_function(struct tevent_context *ev_ctx,
+ struct messaging_context *msg_ctx,
+ const char *pipe_name, int fd)
{
struct named_pipe_client *npc;
struct tstream_context *plain;
void set_incoming_fault(struct pipes_struct *p);
void process_complete_pdu(struct pipes_struct *p);
+int create_named_pipe_socket(const char *pipe_name);
bool setup_named_pipe_socket(const char *pipe_name,
struct tevent_context *ev_ctx,
struct messaging_context *msg_ctx);
+void named_pipe_accept_function(struct tevent_context *ev_ctx,
+ struct messaging_context *msg_ctx,
+ const char *pipe_name, int fd);
uint16_t setup_dcerpc_ncacn_tcpip_socket(struct tevent_context *ev_ctx,
struct messaging_context *msg_ctx,