diff options
Diffstat (limited to 'pjsip/src/pjsip-ua/sip_inv.c')
-rw-r--r-- | pjsip/src/pjsip-ua/sip_inv.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/pjsip/src/pjsip-ua/sip_inv.c b/pjsip/src/pjsip-ua/sip_inv.c index dab68d4c..b522b3bd 100644 --- a/pjsip/src/pjsip-ua/sip_inv.c +++ b/pjsip/src/pjsip-ua/sip_inv.c @@ -777,6 +777,8 @@ PJ_DEF(pj_status_t) pjsip_inv_verify_request2(pjsip_rx_data *rdata, *options |= PJSIP_INV_SUPPORT_100REL; if (*options & PJSIP_INV_REQUIRE_TIMER) *options |= PJSIP_INV_SUPPORT_TIMER; + if (*options & PJSIP_INV_REQUIRE_ICE) + *options |= PJSIP_INV_SUPPORT_ICE; /* Get the message in rdata */ msg = rdata->msg_info.msg; @@ -948,12 +950,15 @@ PJ_DEF(pj_status_t) pjsip_inv_verify_request2(pjsip_rx_data *rdata, unsigned i; const pj_str_t STR_100REL = { "100rel", 6}; const pj_str_t STR_TIMER = { "timer", 5}; + const pj_str_t STR_ICE = { "ice", 3 }; for (i=0; i<sup_hdr->count; ++i) { if (pj_stricmp(&sup_hdr->values[i], &STR_100REL)==0) rem_option |= PJSIP_INV_SUPPORT_100REL; - if (pj_stricmp(&sup_hdr->values[i], &STR_TIMER)==0) + else if (pj_stricmp(&sup_hdr->values[i], &STR_TIMER)==0) rem_option |= PJSIP_INV_SUPPORT_TIMER; + else if (pj_stricmp(&sup_hdr->values[i], &STR_ICE)==0) + rem_option |= PJSIP_INV_SUPPORT_ICE; } } @@ -965,6 +970,7 @@ PJ_DEF(pj_status_t) pjsip_inv_verify_request2(pjsip_rx_data *rdata, const pj_str_t STR_100REL = { "100rel", 6}; const pj_str_t STR_REPLACES = { "replaces", 8 }; const pj_str_t STR_TIMER = { "timer", 5 }; + const pj_str_t STR_ICE = { "ice", 3 }; unsigned unsupp_cnt = 0; pj_str_t unsupp_tags[PJSIP_GENERIC_ARRAY_MAX_COUNT]; @@ -986,6 +992,10 @@ PJ_DEF(pj_status_t) pjsip_inv_verify_request2(pjsip_rx_data *rdata, NULL, &STR_REPLACES); if (!supp) unsupp_tags[unsupp_cnt++] = req_hdr->values[i]; + } else if ((*options & PJSIP_INV_SUPPORT_ICE) && + pj_stricmp(&req_hdr->values[i], &STR_ICE)==0) + { + rem_option |= PJSIP_INV_REQUIRE_ICE; } else if (!pjsip_endpt_has_capability(endpt, PJSIP_H_SUPPORTED, NULL, &req_hdr->values[i])) |