Ignore:
Timestamp:
Nov 14, 2012, 12:59:34 PM (13 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: update vendor to 3.6.0

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vendor/current/source4/libnet/groupinfo.c

    r414 r740  
    4747
    4848
    49 static void continue_groupinfo_lookup(struct rpc_request *req);
    50 static void continue_groupinfo_opengroup(struct rpc_request *req);
    51 static void continue_groupinfo_getgroup(struct rpc_request *req);
    52 static void continue_groupinfo_closegroup(struct rpc_request *req);
     49static void continue_groupinfo_lookup(struct tevent_req *subreq);
     50static void continue_groupinfo_opengroup(struct tevent_req *subreq);
     51static void continue_groupinfo_getgroup(struct tevent_req *subreq);
     52static void continue_groupinfo_closegroup(struct tevent_req *subreq);
    5353
    5454
     
    5656 * Stage 1 (optional): Look for a group name in SAM server.
    5757 */
    58 static void continue_groupinfo_lookup(struct rpc_request *req)
    59 {
    60         struct composite_context *c;
    61         struct groupinfo_state *s;
    62         struct rpc_request *opengroup_req;
     58static void continue_groupinfo_lookup(struct tevent_req *subreq)
     59{
     60        struct composite_context *c;
     61        struct groupinfo_state *s;
    6362        struct monitor_msg msg;
    6463        struct msg_rpc_lookup_name *msg_lookup;
    6564
    66         c = talloc_get_type(req->async.private_data, struct composite_context);
     65        c = tevent_req_callback_data(subreq, struct composite_context);
    6766        s = talloc_get_type(c->private_data, struct groupinfo_state);
    6867
    6968        /* receive samr_Lookup reply */
    70         c->status = dcerpc_ndr_request_recv(req);
     69        c->status = dcerpc_samr_LookupNames_r_recv(subreq, s);
     70        TALLOC_FREE(subreq);
    7171        if (!composite_is_ok(c)) return;
    7272       
     
    105105
    106106        /* send request */
    107         opengroup_req = dcerpc_samr_OpenGroup_send(s->pipe, c, &s->opengroup);
    108         if (composite_nomem(opengroup_req, c)) return;
    109 
    110         composite_continue_rpc(c, opengroup_req, continue_groupinfo_opengroup, c);
     107        subreq = dcerpc_samr_OpenGroup_r_send(s, c->event_ctx,
     108                                              s->pipe->binding_handle,
     109                                              &s->opengroup);
     110        if (composite_nomem(subreq, c)) return;
     111
     112        tevent_req_set_callback(subreq, continue_groupinfo_opengroup, c);
    111113}
    112114
     
    115117 * Stage 2: Open group policy handle.
    116118 */
    117 static void continue_groupinfo_opengroup(struct rpc_request *req)
    118 {
    119         struct composite_context *c;
    120         struct groupinfo_state *s;
    121         struct rpc_request *querygroup_req;
     119static void continue_groupinfo_opengroup(struct tevent_req *subreq)
     120{
     121        struct composite_context *c;
     122        struct groupinfo_state *s;
    122123        struct monitor_msg msg;
    123124        struct msg_rpc_open_group *msg_open;
    124125
    125         c = talloc_get_type(req->async.private_data, struct composite_context);
     126        c = tevent_req_callback_data(subreq, struct composite_context);
    126127        s = talloc_get_type(c->private_data, struct groupinfo_state);
    127128
    128129        /* receive samr_OpenGroup reply */
    129         c->status = dcerpc_ndr_request_recv(req);
     130        c->status = dcerpc_samr_OpenGroup_r_recv(subreq, s);
     131        TALLOC_FREE(subreq);
    130132        if (!composite_is_ok(c)) return;
    131133
     
    154156       
    155157        /* queue rpc call, set event handling and new state */
    156         querygroup_req = dcerpc_samr_QueryGroupInfo_send(s->pipe, c, &s->querygroupinfo);
    157         if (composite_nomem(querygroup_req, c)) return;
    158        
    159         composite_continue_rpc(c, querygroup_req, continue_groupinfo_getgroup, c);
     158        subreq = dcerpc_samr_QueryGroupInfo_r_send(s,
     159                                                   c->event_ctx,
     160                                                   s->pipe->binding_handle,
     161                                                   &s->querygroupinfo);
     162        if (composite_nomem(subreq, c)) return;
     163       
     164        tevent_req_set_callback(subreq, continue_groupinfo_getgroup, c);
    160165}
    161166
     
    164169 * Stage 3: Get requested group information.
    165170 */
    166 static void continue_groupinfo_getgroup(struct rpc_request *req)
    167 {
    168         struct composite_context *c;
    169         struct groupinfo_state *s;
    170         struct rpc_request *close_req;
     171static void continue_groupinfo_getgroup(struct tevent_req *subreq)
     172{
     173        struct composite_context *c;
     174        struct groupinfo_state *s;
    171175        struct monitor_msg msg;
    172176        struct msg_rpc_query_group *msg_query;
    173177
    174         c = talloc_get_type(req->async.private_data, struct composite_context);
     178        c = tevent_req_callback_data(subreq, struct composite_context);
    175179        s = talloc_get_type(c->private_data, struct groupinfo_state);
    176180
    177181        /* receive samr_QueryGroupInfo reply */
    178         c->status = dcerpc_ndr_request_recv(req);
     182        c->status = dcerpc_samr_QueryGroupInfo_r_recv(subreq, s);
     183        TALLOC_FREE(subreq);
    179184        if (!composite_is_ok(c)) return;
    180185
     
    203208       
    204209        /* queue rpc call, set event handling and new state */
    205         close_req = dcerpc_samr_Close_send(s->pipe, c, &s->samrclose);
    206         if (composite_nomem(close_req, c)) return;
    207        
    208         composite_continue_rpc(c, close_req, continue_groupinfo_closegroup, c);
     210        subreq = dcerpc_samr_Close_r_send(s, c->event_ctx,
     211                                          s->pipe->binding_handle,
     212                                          &s->samrclose);
     213        if (composite_nomem(subreq, c)) return;
     214       
     215        tevent_req_set_callback(subreq, continue_groupinfo_closegroup, c);
    209216}
    210217
     
    213220 * Stage 4: Close policy handle associated with opened group.
    214221 */
    215 static void continue_groupinfo_closegroup(struct rpc_request *req)
     222static void continue_groupinfo_closegroup(struct tevent_req *subreq)
    216223{
    217224        struct composite_context *c;
     
    220227        struct msg_rpc_close_group *msg_close;
    221228
    222         c = talloc_get_type(req->async.private_data, struct composite_context);
     229        c = tevent_req_callback_data(subreq, struct composite_context);
    223230        s = talloc_get_type(c->private_data, struct groupinfo_state);
    224231
    225232        /* receive samr_Close reply */
    226         c->status = dcerpc_ndr_request_recv(req);
     233        c->status = dcerpc_samr_Close_r_recv(subreq, s);
     234        TALLOC_FREE(subreq);
    227235        if (!composite_is_ok(c)) return;
    228236
     
    260268        struct groupinfo_state *s;
    261269        struct dom_sid *sid;
    262         struct rpc_request *opengroup_req, *lookup_req;
     270        struct tevent_req *subreq;
    263271
    264272        if (!p || !io) return NULL;
     
    287295               
    288296                /* send request */
    289                 opengroup_req = dcerpc_samr_OpenGroup_send(p, c, &s->opengroup);
    290                 if (composite_nomem(opengroup_req, c)) return c;
    291 
    292                 composite_continue_rpc(c, opengroup_req, continue_groupinfo_opengroup, c);
     297                subreq = dcerpc_samr_OpenGroup_r_send(s, c->event_ctx,
     298                                                      p->binding_handle,
     299                                                      &s->opengroup);
     300                if (composite_nomem(subreq, c)) return c;
     301
     302                tevent_req_set_callback(subreq, continue_groupinfo_opengroup, c);
    293303
    294304        } else {
     
    307317
    308318                /* send request */
    309                 lookup_req = dcerpc_samr_LookupNames_send(p, c, &s->lookup);
    310                 if (composite_nomem(lookup_req, c)) return c;
    311                
    312                 composite_continue_rpc(c, lookup_req, continue_groupinfo_lookup, c);
     319                subreq = dcerpc_samr_LookupNames_r_send(s, c->event_ctx,
     320                                                        p->binding_handle,
     321                                                        &s->lookup);
     322                if (composite_nomem(subreq, c)) return c;
     323               
     324                tevent_req_set_callback(subreq, continue_groupinfo_lookup, c);
    313325        }
    314326
Note: See TracChangeset for help on using the changeset viewer.