1920a1921 > static int sip_removeheader(struct ast_channel *chan, void *data); 6660c6666 < if (p->sessionversion_remote < 0 || p->sessionversion_remote != rua_version) { --- > if (p->sessionversion_remote < 0 || p->sessionversion_remote != rua_version || rua_version == 0) { 6805c6811 < if (numberofmediastreams > 3) --- > if (numberofmediastreams > 4) 22194a22201,22220 > static char *app_sipremoveheader = "SIPRemoveHeader"; > static char *synopsis_sipremoveheader = "Remove SIP headers previously added with SIPAddHeader"; > > static char *descrip_sipremoveheader = "" > " SIPRemoveHeader()\n" > "SIPRemoveHeader() allows you to remove headers which were previously \n" > "added with SIPAddHeader(). If no parameter is supplied, all previously \n" > "added headers will be removed. If a parameter is supplied, only the matching \n" > "headers will be removed.\n\n" > "For example you have added these 2 headers:\n" > " SIPAddHeader(P-Asserted-Identity: sip:foo@bar);\n" > " SIPAddHeader(P-Preferred-Identity: sip:bar@foo);\n\n" > " // remove all headers\n" > " SIPRemoveHeader();\n\n" > " // remove all P- headers\n" > " SIPRemoveHeader(P-);\n\n" > " // remove only the PAI header (note the : at the end)\n" > " SIPRemoveHeader(P-Asserted-Identity:);\n\n" > "Always returns 0\n"; > 22292a22319,22350 > /*! \brief Remove SIP headers added previously with SipAddHeader application */ > static int sip_removeheader(struct ast_channel *chan, void *data) > { > struct ast_var_t *newvariable; > struct varshead *headp; > int removeall = 0; > char *inbuf = (char *) data; > > if (ast_strlen_zero(inbuf)) { > removeall = 1; > } > ast_channel_lock(chan); > > headp=&chan->varshead; > AST_LIST_TRAVERSE_SAFE_BEGIN (headp, newvariable, entries) { > if (strncasecmp(ast_var_name(newvariable), "SIPADDHEADER", strlen("SIPADDHEADER")) == 0) { > if (removeall || (!strncasecmp(ast_var_value(newvariable),inbuf,strlen(inbuf)))) { > if (sipdebug) > ast_log(LOG_DEBUG,"removing SIP Header \"%s\" as %s\n", > ast_var_value(newvariable), > ast_var_name(newvariable)); > AST_LIST_REMOVE_CURRENT(entries); > ast_var_delete(newvariable); > } > } > } > AST_LIST_TRAVERSE_SAFE_END; > > ast_channel_unlock(chan); > return 0; > } > 22531a22590 > ast_register_application(app_sipremoveheader, sip_removeheader, synopsis_sipremoveheader, descrip_sipremoveheader); 22573a22633 > ast_unregister_application(app_sipremoveheader);