static int w_replace_to(struct sip_msg* msg, char* p1, char* p2) { str uri_s; str dsp_s; str *uri; str *dsp; if (p2==NULL) { p2 = p1; p1 = NULL; dsp = NULL; } /* p1 dispaly , p2 uri */ if ( p1!=NULL ) { if(pv_printf_s( msg, (pv_elem_p)p1, &dsp_s)!=0) return -1; dsp = &dsp_s; } /* compute the URI string; if empty string -> make it NULL */ if (pv_printf_s( msg, (pv_elem_p)p2, &uri_s)!=0) return -1; uri = uri_s.len?&uri_s:NULL; /* parse TO hdr */ if ( msg->to==0 && (parse_headers(msg,HDR_TO_F,0)!=0 || msg->to==0) ) { LM_ERR("failed to parse TO hdr\n"); return -1; } return (replace_uri(msg, dsp, uri, msg->to, 1)==0)?1:-1; }
static int w_replace_to(struct sip_msg* msg, str *dsp, str *uri) { /* parse TO hdr */ if ( msg->to==0 && (parse_headers(msg,HDR_TO_F,0)!=0 || msg->to==0) ) { LM_ERR("failed to parse TO hdr\n"); return -1; } return (replace_uri(msg, dsp, uri, msg->to, 1)==0)?1:-1; }
static int w_replace_from(struct sip_msg* msg, str* dsp, str* uri) { if (parse_from_header(msg)<0 ) { LM_ERR("failed to find/parse FROM hdr\n"); return -1; } LM_DBG("dsp=%p (len=%d) , uri=%p (len=%d)\n", dsp,dsp?dsp->len:0,uri,uri?uri->len:0); return (replace_uri(msg, dsp, uri, msg->from, 0)==0)?1:-1; }
int replace_to_api(sip_msg_t *msg, str* pd, str* pu) { str *uri; str *dsp; if ( msg->to==0 && (parse_headers(msg,HDR_TO_F,0)!=0 || msg->to==0) ) { LM_ERR("failed to find/parse TO hdr\n"); return -1; } uri = (pu!=NULL && pu->len>0)?pu:NULL; dsp = (pd!=NULL && pd->len>0)?pd:NULL; LM_DBG("dsp=%p (len=%d) , uri=%p (len=%d)\n", dsp, dsp?dsp->len:0, uri, uri?uri->len:0); return replace_uri(msg, dsp, uri, msg->to, &rr_to_param, &restore_to_avp, 0); }
int replace_from_api(sip_msg_t *msg, str* pd, str* pu) { str *uri; str *dsp; if (parse_from_header(msg)<0 ) { LM_ERR("failed to find/parse FROM hdr\n"); return -1; } uri = (pu!=NULL && pu->len>0)?pu:NULL; dsp = (pd!=NULL && pd->len>0)?pd:NULL; LM_DBG("dsp=%p (len=%d) , uri=%p (len=%d)\n", dsp, dsp?dsp->len:0, uri, uri?uri->len:0); return replace_uri(msg, dsp, uri, msg->from, &rr_from_param, &restore_from_avp, 1); }
static int w_replace_to(struct sip_msg* msg, char* p1, char* p2) { str uri_s; str dsp_s; str *uri = NULL; str *dsp = NULL; if (p2==NULL) { p2 = p1; p1 = NULL; dsp = NULL; } /* p1 display , p2 uri */ if( p1!=NULL ) { if(pv_printf_s( msg, (pv_elem_p)p1, &dsp_s)!=0) return -1; dsp = &dsp_s; } /* compute the URI string; if empty string -> make it NULL */ if (pv_printf_s( msg, (pv_elem_p)p2, &uri_s)!=0) return -1; uri = uri_s.len?&uri_s:NULL; /* parse TO hdr */ if ( msg->to==0 && (parse_headers(msg,HDR_TO_F,0)!=0 || msg->to==0) ) { LM_ERR("failed to parse TO hdr\n"); return -1; } LM_DBG("dsp=%p (len=%d) , uri=%p (len=%d)\n",dsp,dsp?dsp->len:0,uri,uri?uri->len:0); return (replace_uri(msg, dsp, uri, msg->to, &rr_to_param, &restore_to_avp, 0)==0)?1:-1; }
int w_replace_from(struct sip_msg* msg, char* p1, char* p2) { str uri_s; str dsp_s; str *uri = NULL; str *dsp = NULL; if (p2==NULL) { p2 = p1; p1 = NULL; dsp = NULL; } /* p1 display , p2 uri */ if ( p1!=NULL ) { if(pv_printf_s( msg, (pv_elem_p)p1, &dsp_s)!=0) return -1; dsp = &dsp_s; } /* compute the URI string; if empty string -> make it NULL */ if (pv_printf_s( msg, (pv_elem_p)p2, &uri_s)!=0) return -1; uri = uri_s.len?&uri_s:NULL; if (parse_from_header(msg)<0 ) { LM_ERR("failed to find/parse FROM hdr\n"); return -1; } LM_DBG("dsp=%p (len=%d) , uri=%p (len=%d)\n",dsp,dsp?dsp->len:0,uri,uri?uri->len:0); return (replace_uri(msg, dsp, uri, msg->from, &rr_from_param, &restore_from_avp, 1)==0)?1:-1; }