|
@@ -68,154 +68,134 @@ void clean_hdr_field(struct hdr_field* hf)
|
|
|
void** h_parsed;
|
|
|
|
|
|
if (hf->parsed){
|
|
|
- h_parsed=&hf->parsed; /*strict aliasing warnings workarround */
|
|
|
+ h_parsed=&hf->parsed; /* strict aliasing warnings workarround */
|
|
|
switch(hf->type){
|
|
|
- case HDR_VIA_T:
|
|
|
- free_via_list(hf->parsed);
|
|
|
- break;
|
|
|
-
|
|
|
- case HDR_TO_T:
|
|
|
- free_to(hf->parsed);
|
|
|
- break;
|
|
|
-
|
|
|
- case HDR_FROM_T:
|
|
|
- free_to(hf->parsed);
|
|
|
- break;
|
|
|
-
|
|
|
- case HDR_CSEQ_T:
|
|
|
- free_cseq(hf->parsed);
|
|
|
+ /* headers with pkg alloc for parsed structure (alphabetic order) */
|
|
|
+ case HDR_ACCEPT_T:
|
|
|
+ pkg_free(hf->parsed);
|
|
|
break;
|
|
|
|
|
|
- case HDR_CALLID_T:
|
|
|
+ case HDR_ALLOW_T:
|
|
|
+ free_allow_header(hf);
|
|
|
break;
|
|
|
|
|
|
- case HDR_SIPIFMATCH_T:
|
|
|
- free_sipifmatch((str **)h_parsed);
|
|
|
+ case HDR_AUTHORIZATION_T:
|
|
|
+ free_credentials((auth_body_t**)h_parsed);
|
|
|
break;
|
|
|
|
|
|
case HDR_CONTACT_T:
|
|
|
free_contact((contact_body_t**)h_parsed);
|
|
|
break;
|
|
|
|
|
|
- case HDR_MAXFORWARDS_T:
|
|
|
- break;
|
|
|
-
|
|
|
- case HDR_ROUTE_T:
|
|
|
- free_rr((rr_t**)h_parsed);
|
|
|
- break;
|
|
|
-
|
|
|
- case HDR_RECORDROUTE_T:
|
|
|
- free_rr((rr_t**)h_parsed);
|
|
|
+ case HDR_CONTENTDISPOSITION_T:
|
|
|
+ free_disposition( ((struct disposition**)h_parsed));
|
|
|
break;
|
|
|
|
|
|
- case HDR_CONTENTTYPE_T:
|
|
|
+ case HDR_CSEQ_T:
|
|
|
+ free_cseq(hf->parsed);
|
|
|
break;
|
|
|
|
|
|
- case HDR_CONTENTLENGTH_T:
|
|
|
+ case HDR_DATE_T:
|
|
|
+ free_date(hf->parsed);
|
|
|
break;
|
|
|
|
|
|
- case HDR_RETRY_AFTER_T:
|
|
|
+ case HDR_DIVERSION_T:
|
|
|
+ free_to(hf->parsed);
|
|
|
break;
|
|
|
|
|
|
- case HDR_AUTHORIZATION_T:
|
|
|
- free_credentials((auth_body_t**)h_parsed);
|
|
|
+ case HDR_EVENT_T:
|
|
|
+ free_event((event_t**)h_parsed);
|
|
|
break;
|
|
|
|
|
|
case HDR_EXPIRES_T:
|
|
|
free_expires((exp_body_t**)h_parsed);
|
|
|
break;
|
|
|
|
|
|
- case HDR_PROXYAUTH_T:
|
|
|
- free_credentials((auth_body_t**)h_parsed);
|
|
|
- break;
|
|
|
-
|
|
|
- case HDR_SUPPORTED_T:
|
|
|
- if(*h_parsed) {
|
|
|
- ((hf_parsed_t*)(*h_parsed))->hfree(*h_parsed);
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case HDR_REQUIRE_T:
|
|
|
- break;
|
|
|
-
|
|
|
- case HDR_PROXYREQUIRE_T:
|
|
|
- break;
|
|
|
-
|
|
|
- case HDR_UNSUPPORTED_T:
|
|
|
- break;
|
|
|
-
|
|
|
- case HDR_ALLOW_T:
|
|
|
- free_allow_header(hf);
|
|
|
- break;
|
|
|
-
|
|
|
- case HDR_EVENT_T:
|
|
|
- free_event((event_t**)h_parsed);
|
|
|
- break;
|
|
|
-
|
|
|
- case HDR_ACCEPT_T:
|
|
|
- pkg_free(hf->parsed);
|
|
|
+ case HDR_FROM_T:
|
|
|
+ free_to(hf->parsed);
|
|
|
break;
|
|
|
|
|
|
- case HDR_ACCEPTLANGUAGE_T:
|
|
|
+ case HDR_IDENTITY_INFO_T:
|
|
|
+ free_identityinfo(hf->parsed);
|
|
|
break;
|
|
|
|
|
|
- case HDR_ORGANIZATION_T:
|
|
|
+ case HDR_IDENTITY_T:
|
|
|
+ free_identity(hf->parsed);
|
|
|
break;
|
|
|
|
|
|
- case HDR_PRIORITY_T:
|
|
|
+ case HDR_PAI_T:
|
|
|
+ free_to(hf->parsed);
|
|
|
break;
|
|
|
|
|
|
- case HDR_SUBJECT_T:
|
|
|
+ case HDR_PPI_T:
|
|
|
+ free_to(hf->parsed);
|
|
|
break;
|
|
|
|
|
|
- case HDR_USERAGENT_T:
|
|
|
+ case HDR_PROXYAUTH_T:
|
|
|
+ free_credentials((auth_body_t**)h_parsed);
|
|
|
break;
|
|
|
|
|
|
- case HDR_SERVER_T:
|
|
|
+ case HDR_RECORDROUTE_T:
|
|
|
+ free_rr((rr_t**)h_parsed);
|
|
|
break;
|
|
|
|
|
|
- case HDR_ACCEPTDISPOSITION_T:
|
|
|
+ case HDR_REFER_TO_T:
|
|
|
+ free_to(hf->parsed);
|
|
|
break;
|
|
|
|
|
|
- case HDR_CONTENTDISPOSITION_T:
|
|
|
- free_disposition( ((struct disposition**)h_parsed));
|
|
|
+ case HDR_ROUTE_T:
|
|
|
+ free_rr((rr_t**)h_parsed);
|
|
|
break;
|
|
|
|
|
|
- case HDR_DIVERSION_T:
|
|
|
+ case HDR_RPID_T:
|
|
|
free_to(hf->parsed);
|
|
|
break;
|
|
|
|
|
|
- case HDR_RPID_T:
|
|
|
- free_to(hf->parsed);
|
|
|
+ case HDR_SESSIONEXPIRES_T:
|
|
|
+ if(*h_parsed) {
|
|
|
+ ((hf_parsed_t*)(*h_parsed))->hfree(*h_parsed);
|
|
|
+ *h_parsed = 0;
|
|
|
+ }
|
|
|
break;
|
|
|
|
|
|
- case HDR_REFER_TO_T:
|
|
|
- free_to(hf->parsed);
|
|
|
+ case HDR_SIPIFMATCH_T:
|
|
|
+ free_sipifmatch((str **)h_parsed);
|
|
|
break;
|
|
|
|
|
|
case HDR_SUBSCRIPTION_STATE_T:
|
|
|
free_subscription_state((subscription_state_t**)h_parsed);
|
|
|
break;
|
|
|
|
|
|
- case HDR_DATE_T:
|
|
|
- free_date(hf->parsed);
|
|
|
- break;
|
|
|
-
|
|
|
- case HDR_IDENTITY_INFO_T:
|
|
|
- free_identityinfo(hf->parsed);
|
|
|
+ case HDR_SUPPORTED_T:
|
|
|
+ if(*h_parsed) {
|
|
|
+ ((hf_parsed_t*)(*h_parsed))->hfree(*h_parsed);
|
|
|
+ }
|
|
|
break;
|
|
|
|
|
|
- case HDR_IDENTITY_T:
|
|
|
- free_identity(hf->parsed);
|
|
|
+ case HDR_TO_T:
|
|
|
+ free_to(hf->parsed);
|
|
|
break;
|
|
|
|
|
|
- case HDR_SESSIONEXPIRES_T:
|
|
|
- if(*h_parsed) {
|
|
|
- ((hf_parsed_t*)(*h_parsed))->hfree(*h_parsed);
|
|
|
- *h_parsed = 0;
|
|
|
- }
|
|
|
+ case HDR_VIA_T:
|
|
|
+ free_via_list(hf->parsed);
|
|
|
break;
|
|
|
|
|
|
+ /* headers with no alloc for parsed structure */
|
|
|
+ case HDR_CALLID_T:
|
|
|
+ case HDR_MAXFORWARDS_T:
|
|
|
+ case HDR_CONTENTTYPE_T:
|
|
|
+ case HDR_CONTENTLENGTH_T:
|
|
|
+ case HDR_RETRY_AFTER_T:
|
|
|
+ case HDR_REQUIRE_T:
|
|
|
+ case HDR_PROXYREQUIRE_T:
|
|
|
+ case HDR_UNSUPPORTED_T:
|
|
|
+ case HDR_ACCEPTLANGUAGE_T:
|
|
|
+ case HDR_ORGANIZATION_T:
|
|
|
+ case HDR_PRIORITY_T:
|
|
|
+ case HDR_SUBJECT_T:
|
|
|
+ case HDR_USERAGENT_T:
|
|
|
+ case HDR_SERVER_T:
|
|
|
+ case HDR_ACCEPTDISPOSITION_T:
|
|
|
case HDR_MIN_SE_T:
|
|
|
case HDR_ACCEPTCONTACT_T:
|
|
|
case HDR_ALLOWEVENTS_T:
|
|
@@ -230,14 +210,6 @@ void clean_hdr_field(struct hdr_field* hf)
|
|
|
case HDR_REASON_T:
|
|
|
break;
|
|
|
|
|
|
- case HDR_PPI_T:
|
|
|
- free_to(hf->parsed);
|
|
|
- break;
|
|
|
-
|
|
|
- case HDR_PAI_T:
|
|
|
- free_to(hf->parsed);
|
|
|
- break;
|
|
|
-
|
|
|
default:
|
|
|
LOG(L_CRIT, "BUG: clean_hdr_field: unknown header type %d\n",
|
|
|
hf->type);
|