static belle_sip_header_t * sal_body_handler_find_header(const SalBodyHandler *body_handler, const char *header_name) { belle_sip_body_handler_t *bsbh = BELLE_SIP_BODY_HANDLER(body_handler); const belle_sip_list_t *l = belle_sip_body_handler_get_headers(bsbh); for (; l != NULL; l = l->next) { belle_sip_header_t *header = BELLE_SIP_HEADER(l->data); if (strcmp(belle_sip_header_get_name(header), header_name) == 0) { return header; } } return NULL; }
static unsigned int is_system_header(belle_sip_header_t* header) { const char* name=belle_sip_header_get_name(header); return strcasecmp(BELLE_SIP_VIA,name) ==0 || strcasecmp(BELLE_SIP_FROM,name) ==0 || strcasecmp(BELLE_SIP_TO,name) ==0 || strcasecmp(BELLE_SIP_CSEQ,name) ==0 || strcasecmp(BELLE_SIP_CALL_ID,name) ==0 || strcasecmp(BELLE_SIP_PROXY_AUTHORIZATION,name) == 0 || strcasecmp(BELLE_SIP_AUTHORIZATION,name) == 0 || strcasecmp(BELLE_SIP_MAX_FORWARDS,name) == 0 || strcasecmp(BELLE_SIP_ALLOW,name) ==0 || strcasecmp(BELLE_SIP_ROUTE,name) ==0; }
SalBodyHandler * sal_body_handler_find_part_by_header(const SalBodyHandler *body_handler, const char *header_name, const char *header_value) { const belle_sip_list_t *l = belle_sip_multipart_body_handler_get_parts(BELLE_SIP_MULTIPART_BODY_HANDLER(body_handler)); for (; l != NULL; l = l->next) { belle_sip_body_handler_t *bsbh = BELLE_SIP_BODY_HANDLER(l->data); const belle_sip_list_t *headers = belle_sip_body_handler_get_headers(bsbh); for (; headers != NULL; headers = headers->next) { belle_sip_header_t *header = BELLE_SIP_HEADER(headers->data); if ((strcmp(belle_sip_header_get_name(header), header_name) == 0) && (strcmp(belle_sip_header_get_unparsed_value(header), header_value) == 0)) { return (SalBodyHandler *)bsbh; } } } return NULL; }