release all formerly-pending tcap_components after sending them

This commit is contained in:
Harald Welte 2010-07-18 01:23:49 +02:00
parent d62e881f9d
commit 2631e7adcd
1 changed files with 14 additions and 0 deletions

View File

@ -41,6 +41,16 @@ static ComponentPortion_t *assemble_components(ComponentPortion_t *cp, struct tc
return NULL;
}
static void release_components(struct tcap_dialogue *td)
{
struct tcap_component *tcomp, *tcomp2;
llist_for_each_entry_safe(tcomp, tcomp2, &td->pend_comp_list, list) {
llist_del(&tcomp->list);
talloc_free(tcomp);
}
}
/* Extract the Application Context Name and User Info from a DialoguePDU */
static int extract_appctx_uinfo(OBJECT_IDENTIFIER_t **app_ctx_name, struct user_information **user_info,
struct DialoguePDU *dial_pdu)
@ -170,6 +180,8 @@ int tcap_csl_tc_begin_req(struct tcap_dialogue *td, OBJECT_IDENTIFIER_t *app_ctx
tcap_trans_set_state(&td->trans, TCAP_TS_INIT_SENT);
release_components(td);
return rc;
}
@ -386,6 +398,8 @@ int tcap_csl_tc_cont_req(struct tcap_dialogue *td, OBJECT_IDENTIFIER_t *app_ctx,
tcap_trans_set_state(&td->trans, TCAP_TS_ACTIVE);
release_components(td);
return rc;
}