Use pidl for _srvsvc_NetSessDel().
authorGünther Deschner <gd@samba.org>
Sun, 9 Mar 2008 17:01:52 +0000 (18:01 +0100)
committerGünther Deschner <gd@samba.org>
Mon, 10 Mar 2008 02:43:39 +0000 (03:43 +0100)
Guenther
(This used to be commit 8a10bc13aee7c34f466fa69773694be97f0e7d85)

source3/rpc_server/srv_srvsvc.c
source3/rpc_server/srv_srvsvc_nt.c

index 5351f93346847f327a6e5c5ab2ab99e3bccac6c3..7579e109d47ef76beb33eaab5497486644f2d770 100644 (file)
@@ -152,26 +152,7 @@ static bool api_srv_net_sess_enum(pipes_struct *p)
 
 static bool api_srv_net_sess_del(pipes_struct *p)
 {
-       SRV_Q_NET_SESS_DEL q_u;
-       SRV_R_NET_SESS_DEL r_u;
-       prs_struct *data = &p->in_data.data;
-       prs_struct *rdata = &p->out_data.rdata;
-
-       ZERO_STRUCT(q_u);
-       ZERO_STRUCT(r_u);
-
-       /* grab the net server get enum */
-       if (!srv_io_q_net_sess_del("", &q_u, data, 0))
-               return False;
-
-       /* construct reply.  always indicate success */
-       r_u.status = _srv_net_sess_del(p, &q_u, &r_u);
-
-       /* store the response in the SMB stream */
-       if (!srv_io_r_net_sess_del("", &r_u, rdata, 0))
-               return False;
-
-       return True;
+       return proxy_srvsvc_call(p, NDR_SRVSVC_NETSESSDEL);
 }
 
 /*******************************************************************
index 0d4addde140dacd636796011e7039e176ba4d897..7c2efc946d0b2d236ff50c2e6b9e5689299398d5 100644 (file)
@@ -1274,31 +1274,33 @@ WERROR _srv_net_sess_enum(pipes_struct *p, SRV_Q_NET_SESS_ENUM *q_u, SRV_R_NET_S
 }
 
 /*******************************************************************
-net sess del
+ _srvsvc_NetSessDel
 ********************************************************************/
 
-WERROR _srv_net_sess_del(pipes_struct *p, SRV_Q_NET_SESS_DEL *q_u, SRV_R_NET_SESS_DEL *r_u)
+WERROR _srvsvc_NetSessDel(pipes_struct *p,
+                         struct srvsvc_NetSessDel *r)
 {
        struct sessionid *session_list;
        struct current_user user;
        int num_sessions, snum;
-       fstring username;
-       fstring machine;
+       const char *username;
+       const char *machine;
        bool not_root = False;
+       WERROR werr;
 
-       rpcstr_pull_unistr2_fstring(username, &q_u->uni_user_name);
-       rpcstr_pull_unistr2_fstring(machine, &q_u->uni_cli_name);
+       username = r->in.user;
+       machine = r->in.client;
 
        /* strip leading backslashes if any */
-       while (machine[0] == '\\') {
-               memmove(machine, &machine[1], strlen(machine));
+       if (machine && machine[0] == '\\' && machine[1] == '\\') {
+               machine += 2;
        }
 
        num_sessions = list_sessions(p->mem_ctx, &session_list);
 
-       DEBUG(5,("_srv_net_sess_del: %d\n", __LINE__));
+       DEBUG(5,("_srvsvc_NetSessDel: %d\n", __LINE__));
 
-       r_u->status = WERR_ACCESS_DENIED;
+       werr = WERR_ACCESS_DENIED;
 
        get_current_user(&user, p);
 
@@ -1327,19 +1329,18 @@ WERROR _srv_net_sess_del(pipes_struct *p, SRV_Q_NET_SESS_DEL *q_u, SRV_R_NET_SES
                                                MSG_SHUTDOWN, &data_blob_null);
 
                        if (NT_STATUS_IS_OK(ntstat))
-                               r_u->status = WERR_OK;
+                               werr = WERR_OK;
 
                        if (not_root)
                                unbecome_root();
                }
        }
 
-       DEBUG(5,("_srv_net_sess_del: %d\n", __LINE__));
-
+       DEBUG(5,("_srvsvc_NetSessDel: %d\n", __LINE__));
 
 done:
 
-       return r_u->status;
+       return werr;
 }
 
 /*******************************************************************
@@ -2508,12 +2509,6 @@ WERROR _srvsvc_NetSessEnum(pipes_struct *p, struct srvsvc_NetSessEnum *r)
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _srvsvc_NetSessDel(pipes_struct *p, struct srvsvc_NetSessDel *r)
-{
-       p->rng_fault_state = True;
-       return WERR_NOT_SUPPORTED;
-}
-
 WERROR _srvsvc_NetShareCheck(pipes_struct *p, struct srvsvc_NetShareCheck *r)
 {
        p->rng_fault_state = True;