The branch, master has been updated
       via  8fce373 s3-rpc_server: Let enpoint mapper listen on port 135.
       via  0abe7c6 s3-rpc_server: Added event and msg ctx to _rpc_ep_register.
       via  df5d265 s3-rpc_server: Added port option to _rpc_ep_register.
       via  a99e670 s3-rpc_server: Added function to setup tcpip listener!
       via  fc46ea9 s3-rpc_server: Rename srv_rpc_register.c.
       via  116144a s3-rpc_server: Rename srv_rpc_register.
       via  184702a s3-rpc_server: Pass tevent_context to dcerpc endpoints.
       via  02b356d s3-rpc_server: Create a common ncacn listen state.
       via  98fcbd0 s3-rpc_server: Rename named_pipe_read_packet().
       via  59f7bcb s3-librpc: Only register NCACN_NP.
      from  debd6da s3-lsa: fix some uninitialized variables in our lsa server.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 8fce37331ed713ddfa40ed791bf43b904c426423
Author: Andreas Schneider <[email protected]>
Date:   Mon Feb 21 09:58:26 2011 +0100

    s3-rpc_server: Let enpoint mapper listen on port 135.
    
    *** This is my commit #500 ***
    
    Endpoint Mapper is disabled by default. The next steps are to setup a
    tcpip and ncalrpc listener for each service and register it at epm.
    
    Autobuild-User: Andreas Schneider <[email protected]>
    Autobuild-Date: Tue Feb 22 00:07:45 CET 2011 on sn-devel-104

commit 0abe7c68c5623d4468609654dfde72c5ccce396e
Author: Andreas Schneider <[email protected]>
Date:   Mon Feb 21 16:28:38 2011 +0100

    s3-rpc_server: Added event and msg ctx to _rpc_ep_register.

commit df5d26521a9b0d2bbbe474ead03d1a0b0c7fabf2
Author: Andreas Schneider <[email protected]>
Date:   Mon Feb 21 09:08:47 2011 +0100

    s3-rpc_server: Added port option to _rpc_ep_register.

commit a99e670cd228e2a0d9070aa6541d29b63913fc8d
Author: Andreas Schneider <[email protected]>
Date:   Mon Feb 14 10:29:14 2011 +0100

    s3-rpc_server: Added function to setup tcpip listener!

commit fc46ea981f4953f4ec4850ac613635bde077c7d7
Author: Andreas Schneider <[email protected]>
Date:   Thu Feb 17 12:24:41 2011 +0100

    s3-rpc_server: Rename srv_rpc_register.c.

commit 116144a4d0f89c8a08fa21bae92d5f25b66282c5
Author: Andreas Schneider <[email protected]>
Date:   Thu Feb 17 12:21:09 2011 +0100

    s3-rpc_server: Rename srv_rpc_register.

commit 184702a43d7976041aaaf721b25c8eaca627259e
Author: Andreas Schneider <[email protected]>
Date:   Thu Feb 17 12:18:45 2011 +0100

    s3-rpc_server: Pass tevent_context to dcerpc endpoints.

commit 02b356d7a8f75e5ea431a29e33845df089ff7446
Author: Andreas Schneider <[email protected]>
Date:   Tue Feb 15 12:57:26 2011 +0100

    s3-rpc_server: Create a common ncacn listen state.

commit 98fcbd09757b7e9a59a554b4ce1b1097a6ad288a
Author: Andreas Schneider <[email protected]>
Date:   Mon Feb 14 15:58:14 2011 +0100

    s3-rpc_server: Rename named_pipe_read_packet().
    
    This is not named pipe specific.

commit 59f7bcbc39cc412137b63b743ac19f11d4639b26
Author: Andreas Schneider <[email protected]>
Date:   Mon Feb 21 17:55:52 2011 +0100

    s3-librpc: Only register NCACN_NP.
    
    This is the only transport we support at the moment.

-----------------------------------------------------------------------

Summary of changes:
 source3/Makefile.in                                |    2 +-
 source3/librpc/rpc/dcerpc_ep.c                     |   31 +-
 .../{srv_rpc_register.c => rpc_ep_setup.c}         |  288 ++++++++--
 .../{srv_rpc_register.h => rpc_ep_setup.h}         |    3 +-
 source3/rpc_server/rpc_server.c                    |  625 +++++++++++++++++++-
 source3/rpc_server/rpc_server.h                    |    6 +
 source3/rpc_server/wscript_build                   |    2 +-
 source3/smbd/server.c                              |    4 +-
 8 files changed, 876 insertions(+), 85 deletions(-)
 rename source3/rpc_server/{srv_rpc_register.c => rpc_ep_setup.c} (57%)
 rename source3/rpc_server/{srv_rpc_register.h => rpc_ep_setup.h} (90%)


Changeset truncated at 500 lines:

diff --git a/source3/Makefile.in b/source3/Makefile.in
index 686d04c..2f3575f 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -729,7 +729,7 @@ RPC_RPCECHO_OBJ = rpc_server/echo/srv_echo_nt.o 
librpc/gen_ndr/srv_echo.o
 
 RPC_EPMAPPER_OBJ = rpc_server/epmapper/srv_epmapper.o 
librpc/gen_ndr/srv_epmapper.o
 
-RPC_SERVER_REGISTER_OBJ = rpc_server/srv_rpc_register.o $(DCE_RPC_EP_OBJ)
+RPC_SERVER_REGISTER_OBJ = rpc_server/rpc_ep_setup.o $(DCE_RPC_EP_OBJ)
 
 RPC_SERVER_OBJ = $(RPC_LSARPC_OBJ) $(RPC_WINREG_OBJ) $(RPC_INITSHUTDOWN_OBJ) \
                 $(RPC_DSSETUP_OBJ) $(RPC_WKSSVC_OBJ) $(RPC_SVCCTL_OBJ) \
diff --git a/source3/librpc/rpc/dcerpc_ep.c b/source3/librpc/rpc/dcerpc_ep.c
index cfbe0ab..37d69b0 100644
--- a/source3/librpc/rpc/dcerpc_ep.c
+++ b/source3/librpc/rpc/dcerpc_ep.c
@@ -29,7 +29,9 @@ NTSTATUS dcerpc_binding_vector_create(TALLOC_CTX *mem_ctx,
                                      struct dcerpc_binding_vector **pbvec)
 {
        struct dcerpc_binding_vector *bvec;
-       uint32_t ep_count, i;
+       uint32_t ep_count;
+       uint32_t count = 0;
+       uint32_t i;
        NTSTATUS status;
        TALLOC_CTX *tmp_ctx;
 
@@ -68,17 +70,28 @@ NTSTATUS dcerpc_binding_vector_create(TALLOC_CTX *mem_ctx,
                }
 
                b->object = iface->syntax_id;
-               if (b->transport == NCACN_NP) {
-                       b->host = talloc_asprintf(b, "\\\\%s", global_myname());
-                       if (b->host == NULL) {
-                               status = NT_STATUS_NO_MEMORY;
-                               goto done;
-                       }
+
+               switch (b->transport) {
+                       case NCACN_NP:
+                               b->host = talloc_asprintf(b, "\\\\%s", 
global_myname());
+                               if (b->host == NULL) {
+                                       status = NT_STATUS_NO_MEMORY;
+                                       goto done;
+                               }
+                               break;
+                       case NCACN_IP_TCP:
+                               /* TODO */
+                       case NCALRPC:
+                               /* TODO */
+                       default:
+                               continue;
                }
 
-               bvec->bindings[i] = *b;
+               bvec->bindings[count] = *b;
+               count++;
        }
-       bvec->count = ep_count;
+
+       bvec->count = count;
 
        *pbvec = talloc_move(mem_ctx, &bvec);
 
diff --git a/source3/rpc_server/srv_rpc_register.c 
b/source3/rpc_server/rpc_ep_setup.c
similarity index 57%
rename from source3/rpc_server/srv_rpc_register.c
rename to source3/rpc_server/rpc_ep_setup.c
index 9d213ec..e8640fa 100644
--- a/source3/rpc_server/srv_rpc_register.c
+++ b/source3/rpc_server/rpc_ep_setup.c
@@ -43,10 +43,82 @@
 
 #include "librpc/rpc/dcerpc_ep.h"
 
-#include "rpc_server/srv_rpc_register.h"
+#include "rpc_server/rpc_ep_setup.h"
+#include "rpc_server/rpc_server.h"
+
+struct dcesrv_ep_context {
+       struct tevent_context *ev_ctx;
+       struct messaging_context *msg_ctx;
+};
+
+static uint16_t _open_sockets(struct tevent_context *ev_ctx,
+                             struct messaging_context *msg_ctx,
+                             struct ndr_syntax_id syntax_id,
+                             uint16_t port)
+{
+       uint32_t num_ifs = iface_count();
+       uint32_t i;
+       uint16_t p = 0;
+
+       if (lp_interfaces() && lp_bind_interfaces_only()) {
+               /*
+                * We have been given an interfaces line, and been told to only
+                * bind to those interfaces. Create a socket per interface and
+                * bind to only these.
+                */
+
+               /* Now open a listen socket for each of the interfaces. */
+               for(i = 0; i < num_ifs; i++) {
+                       const struct sockaddr_storage *ifss =
+                                       iface_n_sockaddr_storage(i);
+
+                       p = setup_dcerpc_ncacn_tcpip_socket(ev_ctx,
+                                                           msg_ctx,
+                                                           syntax_id,
+                                                           ifss,
+                                                           port);
+                       if (p == 0) {
+                               return 0;
+                       }
+                       port = p;
+               }
+       } else {
+               const char *sock_addr = lp_socket_address();
+               const char *sock_ptr;
+               char *sock_tok;
+
+               for (sock_ptr = sock_addr;
+                    next_token_talloc(talloc_tos(), &sock_ptr, &sock_tok, " 
\t,");
+                   ) {
+                       struct sockaddr_storage ss;
+
+                       /* open an incoming socket */
+                       if (!interpret_string_addr(&ss,
+                                                  sock_tok,
+                                                  AI_NUMERICHOST|AI_PASSIVE)) {
+                               continue;
+                       }
+
+                       p = setup_dcerpc_ncacn_tcpip_socket(ev_ctx,
+                                                           msg_ctx,
+                                                           syntax_id,
+                                                           &ss,
+                                                           port);
+                       if (p == 0) {
+                               return 0;
+                       }
+                       port = p;
+               }
+       }
+
+       return p;
+}
 
-static NTSTATUS _rpc_ep_register(const struct ndr_interface_table *iface,
-                                const char *name)
+static NTSTATUS _rpc_ep_register(struct tevent_context *ev_ctx,
+                                struct messaging_context *msg_ctx,
+                                const struct ndr_interface_table *iface,
+                                const char *name,
+                                uint16_t port)
 {
        struct dcerpc_binding_vector *v = NULL;
        NTSTATUS status;
@@ -109,9 +181,33 @@ static NTSTATUS _rpc_ep_unregister(const struct 
ndr_interface_table *iface)
        return status;
 }
 
+static bool epmapper_init_cb(void *ptr)
+{
+       struct dcesrv_ep_context *ep_ctx =
+               talloc_get_type_abort(ptr, struct dcesrv_ep_context);
+       uint16_t port;
+
+       port = _open_sockets(ep_ctx->ev_ctx,
+                            ep_ctx->msg_ctx,
+                            ndr_table_epmapper.syntax_id,
+                            135);
+       if (port == 135) {
+               return true;
+       }
+
+       return false;
+}
+
 static bool winreg_init_cb(void *ptr)
 {
-       return NT_STATUS_IS_OK(_rpc_ep_register(&ndr_table_winreg, "winreg"));
+       struct dcesrv_ep_context *ep_ctx =
+               talloc_get_type_abort(ptr, struct dcesrv_ep_context);
+
+       return NT_STATUS_IS_OK(_rpc_ep_register(ep_ctx->ev_ctx,
+                                               ep_ctx->msg_ctx,
+                                               &ndr_table_winreg,
+                                               "winreg",
+                                               0));
 }
 
 static bool winreg_shutdown_cb(void *ptr)
@@ -121,7 +217,14 @@ static bool winreg_shutdown_cb(void *ptr)
 
 static bool srvsvc_init_cb(void *ptr)
 {
-       return NT_STATUS_IS_OK(_rpc_ep_register(&ndr_table_srvsvc, "srvsvc"));
+       struct dcesrv_ep_context *ep_ctx =
+               talloc_get_type_abort(ptr, struct dcesrv_ep_context);
+
+       return NT_STATUS_IS_OK(_rpc_ep_register(ep_ctx->ev_ctx,
+                                               ep_ctx->msg_ctx,
+                                               &ndr_table_srvsvc,
+                                               "srvsvc",
+                                               0));
 }
 
 static bool srvsvc_shutdown_cb(void *ptr)
@@ -131,7 +234,14 @@ static bool srvsvc_shutdown_cb(void *ptr)
 
 static bool lsarpc_init_cb(void *ptr)
 {
-       return NT_STATUS_IS_OK(_rpc_ep_register(&ndr_table_lsarpc, "lsarpc"));
+       struct dcesrv_ep_context *ep_ctx =
+               talloc_get_type_abort(ptr, struct dcesrv_ep_context);
+
+       return NT_STATUS_IS_OK(_rpc_ep_register(ep_ctx->ev_ctx,
+                                               ep_ctx->msg_ctx,
+                                               &ndr_table_lsarpc,
+                                               "lsarpc",
+                                               0));
 }
 
 static bool lsarpc_shutdown_cb(void *ptr)
@@ -141,7 +251,14 @@ static bool lsarpc_shutdown_cb(void *ptr)
 
 static bool samr_init_cb(void *ptr)
 {
-       return NT_STATUS_IS_OK(_rpc_ep_register(&ndr_table_samr, "samr"));
+       struct dcesrv_ep_context *ep_ctx =
+               talloc_get_type_abort(ptr, struct dcesrv_ep_context);
+
+       return NT_STATUS_IS_OK(_rpc_ep_register(ep_ctx->ev_ctx,
+                                               ep_ctx->msg_ctx,
+                                               &ndr_table_samr,
+                                               "samr",
+                                               0));
 }
 
 static bool samr_shutdown_cb(void *ptr)
@@ -151,7 +268,14 @@ static bool samr_shutdown_cb(void *ptr)
 
 static bool netlogon_init_cb(void *ptr)
 {
-       return NT_STATUS_IS_OK(_rpc_ep_register(&ndr_table_netlogon, 
"netlogon"));
+       struct dcesrv_ep_context *ep_ctx =
+               talloc_get_type_abort(ptr, struct dcesrv_ep_context);
+
+       return NT_STATUS_IS_OK(_rpc_ep_register(ep_ctx->ev_ctx,
+                                               ep_ctx->msg_ctx,
+                                               &ndr_table_netlogon,
+                                               "netlogon",
+                                               0));
 }
 
 static bool netlogon_shutdown_cb(void *ptr)
@@ -161,20 +285,24 @@ static bool netlogon_shutdown_cb(void *ptr)
 
 static bool spoolss_init_cb(void *ptr)
 {
-       struct messaging_context *msg_ctx = talloc_get_type_abort(
-               ptr, struct messaging_context);
+       struct dcesrv_ep_context *ep_ctx =
+               talloc_get_type_abort(ptr, struct dcesrv_ep_context);
        NTSTATUS status;
        bool ok;
 
        /*
         * Migrate the printers first.
         */
-       ok = nt_printing_tdb_migrate(msg_ctx);
+       ok = nt_printing_tdb_migrate(ep_ctx->msg_ctx);
        if (!ok) {
                return false;
        }
 
-       status =_rpc_ep_register(&ndr_table_spoolss, "spoolss");
+       status =_rpc_ep_register(ep_ctx->ev_ctx,
+                                ep_ctx->msg_ctx,
+                                &ndr_table_spoolss,
+                                "spoolss",
+                                0);
        if (!NT_STATUS_IS_OK(status)) {
                return false;
        }
@@ -193,11 +321,11 @@ static bool spoolss_shutdown_cb(void *ptr)
 
 static bool svcctl_init_cb(void *ptr)
 {
-       struct messaging_context *msg_ctx = talloc_get_type_abort(
-               ptr, struct messaging_context);
+       struct dcesrv_ep_context *ep_ctx =
+               talloc_get_type_abort(ptr, struct dcesrv_ep_context);
        bool ok;
 
-       ok = svcctl_init_winreg(msg_ctx);
+       ok = svcctl_init_winreg(ep_ctx->msg_ctx);
        if (!ok) {
                return false;
        }
@@ -205,7 +333,11 @@ static bool svcctl_init_cb(void *ptr)
        /* initialize the control hooks */
        init_service_op_table();
 
-       return NT_STATUS_IS_OK(_rpc_ep_register(&ndr_table_svcctl, "svcctl"));
+       return NT_STATUS_IS_OK(_rpc_ep_register(ep_ctx->ev_ctx,
+                                               ep_ctx->msg_ctx,
+                                               &ndr_table_svcctl,
+                                               "svcctl",
+                                               0));
 }
 
 static bool svcctl_shutdown_cb(void *ptr)
@@ -217,7 +349,14 @@ static bool svcctl_shutdown_cb(void *ptr)
 
 static bool ntsvcs_init_cb(void *ptr)
 {
-       return NT_STATUS_IS_OK(_rpc_ep_register(&ndr_table_ntsvcs, "ntsvcs"));
+       struct dcesrv_ep_context *ep_ctx =
+               talloc_get_type_abort(ptr, struct dcesrv_ep_context);
+
+       return NT_STATUS_IS_OK(_rpc_ep_register(ep_ctx->ev_ctx,
+                                               ep_ctx->msg_ctx,
+                                               &ndr_table_ntsvcs,
+                                               "ntsvcs",
+                                               0));
 }
 
 static bool ntsvcs_shutdown_cb(void *ptr)
@@ -227,17 +366,20 @@ static bool ntsvcs_shutdown_cb(void *ptr)
 
 static bool eventlog_init_cb(void *ptr)
 {
-       struct messaging_context *msg_ctx = talloc_get_type_abort(
-               ptr, struct messaging_context);
+       struct dcesrv_ep_context *ep_ctx =
+               talloc_get_type_abort(ptr, struct dcesrv_ep_context);
        NTSTATUS status;
 
-       status =_rpc_ep_register(&ndr_table_eventlog,
-                                "eventlog");
+       status =_rpc_ep_register(ep_ctx->ev_ctx,
+                                ep_ctx->msg_ctx,
+                                &ndr_table_eventlog,
+                                "eventlog",
+                                0);
        if (!NT_STATUS_IS_OK(status)) {
                return false;
        }
 
-       return eventlog_init_winreg(msg_ctx);
+       return eventlog_init_winreg(ep_ctx->msg_ctx);
 }
 
 static bool eventlog_shutdown_cb(void *ptr)
@@ -247,8 +389,14 @@ static bool eventlog_shutdown_cb(void *ptr)
 
 static bool initshutdown_init_cb(void *ptr)
 {
-       return NT_STATUS_IS_OK(_rpc_ep_register(&ndr_table_initshutdown,
-                                               "initshutdown"));
+       struct dcesrv_ep_context *ep_ctx =
+               talloc_get_type_abort(ptr, struct dcesrv_ep_context);
+
+       return NT_STATUS_IS_OK(_rpc_ep_register(ep_ctx->ev_ctx,
+                                               ep_ctx->msg_ctx,
+                                               &ndr_table_initshutdown,
+                                               "initshutdown",
+                                               0));
 }
 
 static bool initshutdown_shutdown_cb(void *ptr)
@@ -257,7 +405,14 @@ static bool initshutdown_shutdown_cb(void *ptr)
 }
 #ifdef DEVELOPER
 static bool rpcecho_init_cb(void *ptr) {
-       return NT_STATUS_IS_OK(_rpc_ep_register(&ndr_table_rpcecho, "rpcecho"));
+       struct dcesrv_ep_context *ep_ctx =
+               talloc_get_type_abort(ptr, struct dcesrv_ep_context);
+
+       return NT_STATUS_IS_OK(_rpc_ep_register(ep_ctx->ev_ctx,
+                                               ep_ctx->msg_ctx,
+                                               &ndr_table_rpcecho,
+                                               "rpcecho",
+                                               0));
 }
 
 static bool rpcecho_shutdown_cb(void *ptr)
@@ -267,30 +422,59 @@ static bool rpcecho_shutdown_cb(void *ptr)
 #endif
 static bool netdfs_init_cb(void *ptr)
 {
-       return NT_STATUS_IS_OK(_rpc_ep_register(&ndr_table_netdfs, "netdfs"));
+       struct dcesrv_ep_context *ep_ctx =
+               talloc_get_type_abort(ptr, struct dcesrv_ep_context);
+
+       return NT_STATUS_IS_OK(_rpc_ep_register(ep_ctx->ev_ctx,
+                                               ep_ctx->msg_ctx,
+                                               &ndr_table_netdfs,
+                                               "netdfs",
+                                               0));
 }
 
 static bool netdfs_shutdown_cb(void *ptr) {
        return NT_STATUS_IS_OK(_rpc_ep_unregister(&ndr_table_netdfs));
 }
 
-static bool dssetup_init_cb(void *ptr) {
-       return NT_STATUS_IS_OK(_rpc_ep_register(&ndr_table_dssetup, "dssetup"));
+static bool dssetup_init_cb(void *ptr)
+{
+       struct dcesrv_ep_context *ep_ctx =
+               talloc_get_type_abort(ptr, struct dcesrv_ep_context);
+
+       return NT_STATUS_IS_OK(_rpc_ep_register(ep_ctx->ev_ctx,
+                                               ep_ctx->msg_ctx,
+                                               &ndr_table_dssetup,
+                                               "dssetup",
+                                               0));
 }
 
 static bool dssetup_shutdown_cb(void *ptr) {
        return NT_STATUS_IS_OK(_rpc_ep_unregister(&ndr_table_dssetup));
 }
 
-static bool wkssvc_init_cb(void *ptr) {
-       return NT_STATUS_IS_OK(_rpc_ep_register(&ndr_table_wkssvc, "wkssvc"));
+static bool wkssvc_init_cb(void *ptr)
+{
+       struct dcesrv_ep_context *ep_ctx =
+               talloc_get_type_abort(ptr, struct dcesrv_ep_context);
+
+       return NT_STATUS_IS_OK(_rpc_ep_register(ep_ctx->ev_ctx,
+                                               ep_ctx->msg_ctx,
+                                               &ndr_table_wkssvc,
+                                               "wkssvc",
+                                               0));
 }
 
 static bool wkssvc_shutdown_cb(void *ptr) {
        return NT_STATUS_IS_OK(_rpc_ep_unregister(&ndr_table_wkssvc));
 }
 
-bool srv_rpc_register(struct messaging_context *msg_ctx) {
+bool dcesrv_ep_setup(struct tevent_context *ev_ctx,
+                    struct messaging_context *msg_ctx)
+{
+       struct dcesrv_ep_context *ep_ctx;
+
+       struct rpc_srv_callbacks epmapper_cb;
+
        struct rpc_srv_callbacks winreg_cb;
        struct rpc_srv_callbacks srvsvc_cb;
 
@@ -312,26 +496,38 @@ bool srv_rpc_register(struct messaging_context *msg_ctx) {
 
        const char *rpcsrv_type;
 
+       ep_ctx = talloc(ev_ctx, struct dcesrv_ep_context);
+       if (ep_ctx == NULL) {
+               return false;
+       }
+
+       ep_ctx->ev_ctx = ev_ctx;
+       ep_ctx->msg_ctx = msg_ctx;
+
        /* start endpoint mapper only if enabled */
        rpcsrv_type = lp_parm_const_string(GLOBAL_SECTION_SNUM,
                                           "rpc_server", "epmapper",
                                           "none");
        if (StrCaseCmp(rpcsrv_type, "embedded") == 0) {
-               if (!NT_STATUS_IS_OK(rpc_epmapper_init(NULL))) {
+               epmapper_cb.init         = epmapper_init_cb;
+               epmapper_cb.shutdown     = NULL;
+               epmapper_cb.private_data = ep_ctx;
+
+               if (!NT_STATUS_IS_OK(rpc_epmapper_init(&epmapper_cb))) {
                        return false;
                }
        }
 
        winreg_cb.init         = winreg_init_cb;
        winreg_cb.shutdown     = winreg_shutdown_cb;
-       winreg_cb.private_data = NULL;
+       winreg_cb.private_data = ep_ctx;
        if (!NT_STATUS_IS_OK(rpc_winreg_init(&winreg_cb))) {
                return false;
        }
 
        srvsvc_cb.init         = srvsvc_init_cb;
        srvsvc_cb.shutdown     = srvsvc_shutdown_cb;
-       srvsvc_cb.private_data = NULL;
+       srvsvc_cb.private_data = ep_ctx;
        if (!NT_STATUS_IS_OK(rpc_srvsvc_init(&srvsvc_cb))) {
                return false;
        }
@@ -339,28 +535,28 @@ bool srv_rpc_register(struct messaging_context *msg_ctx) {
 
        lsarpc_cb.init         = lsarpc_init_cb;


-- 
Samba Shared Repository

Reply via email to