X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=tid%2Ftid_req.c;h=002b7208a8ad6c8770f9f38bc6a61b9e80a8a590;hb=81a61f8c6064bf52ff2a40a3d28e6ee5b2e478d4;hp=1da83388f90c06220282844cded4850aedaffabf;hpb=3f2f7c0b61b33e22ca937809e5a80e68c7490609;p=trust_router.git diff --git a/tid/tid_req.c b/tid/tid_req.c index 1da8338..002b720 100644 --- a/tid/tid_req.c +++ b/tid/tid_req.c @@ -55,6 +55,16 @@ static int destroy_tid_req(TID_REQ *req) gss_delete_sec_context( &minor, &req->gssctx, NULL); } } + if (req->rp_realm!=NULL) + tr_free_name(req->rp_realm); + if (req->realm!=NULL) + tr_free_name(req->realm); + if (req->comm!=NULL) + tr_free_name(req->comm); + if (req->orig_coi!=NULL) + tr_free_name(req->orig_coi); + if (req->request_id!=NULL) + tr_free_name(req->request_id); return 0; } @@ -68,6 +78,7 @@ TID_REQ *tid_req_new() assert(req->json_references); req->conn = -1; req->free_conn = 1; + req->request_id = NULL; return req; } @@ -156,11 +167,21 @@ TR_NAME *tid_req_get_orig_coi(TID_REQ *req) return(req->orig_coi); } -void tid_req_set_rp_orig_coi(TID_REQ *req, TR_NAME *orig_coi) +void tid_req_set_orig_coi(TID_REQ *req, TR_NAME *orig_coi) { req->orig_coi = orig_coi; } +void tid_req_set_request_id(TID_REQ *req, TR_NAME *request_id) +{ + req->request_id = request_id; +} + +TR_NAME *tid_req_get_request_id(TID_REQ *req) +{ + return(req->request_id); +} + TIDC_RESP_FUNC *tid_req_get_resp_func(TID_REQ *req) { return(req->resp_func); @@ -181,11 +202,12 @@ void tid_req_set_cookie(TID_REQ *req, void *cookie) req->cookie = cookie; } +/* struct is allocated in talloc null context */ TID_REQ *tid_dup_req (TID_REQ *orig_req) { TID_REQ *new_req = NULL; - if (NULL == (new_req = talloc_zero(orig_req, TID_REQ))) { + if (NULL == (new_req = talloc_zero(NULL, TID_REQ))) { tr_crit("tid_dup_req: Can't allocated duplicate request."); return NULL; } @@ -206,11 +228,20 @@ TID_REQ *tid_dup_req (TID_REQ *orig_req) tr_crit("tid_dup_req: Can't duplicate request (orig_coi)."); } } - + + if (orig_req->request_id) { + if (NULL == (new_req->request_id = tr_dup_name(orig_req->request_id))) { + tr_crit("tid_dup_req: Can't duplicate request (request_id)."); + } + } + return new_req; } +/* Adds the JSON object ref to req's list of objects to release when the + * req is freed. + */ void tid_req_cleanup_json( TID_REQ *req, json_t *ref) { (void) json_array_append_new(req->json_references, ref); @@ -245,8 +276,8 @@ void tid_srvr_get_address(const TID_SRVR_BLK *blk, assert(blk); sa = talloc_zero(blk, struct sockaddr_in); sa->sin_family = AF_INET; - sa->sin_addr = blk->aaa_server_addr; - sa->sin_port = htons(2083); + inet_aton(blk->aaa_server_addr, &(sa->sin_addr)); + sa->sin_port = htons(2083); /* radsec port */ *out_addr = (struct sockaddr *) sa; *out_len = sizeof( struct sockaddr_in); }