static int w_unset_dlg_profile(struct sip_msg *msg, char *profile, char *value) { pv_elem_t *pve; str val_s; pve = (pv_elem_t *)value; if (((struct dlg_profile_table*)profile)->has_value) { if ( pve==NULL || pv_printf_s(msg, pve, &val_s)!=0 || val_s.len == 0 || val_s.s == NULL) { LM_WARN("cannot get string for value\n"); return -1; } if ( unset_dlg_profile( msg, &val_s, (struct dlg_profile_table*)profile) < 0 ) { LM_ERR("failed to unset profile\n"); return -1; } } else { if ( unset_dlg_profile( msg, NULL, (struct dlg_profile_table*)profile) < 0 ) { LM_ERR("failed to unset profile\n"); return -1; } } return 1; }
static int w_unset_dlg_profile(struct sip_msg *msg, char *profile, char *value) { struct dlg_cell *dlg; pv_elem_t *pve = (pv_elem_t *)value; str val_s; if ( (dlg=get_current_dialog())==NULL ) { LM_CRIT("BUG - setting profile from script, but no dialog found\n"); return -1; } if (((struct dlg_profile_table*)profile)->has_value) { if ( pve==NULL || pv_printf_s(msg, pve, &val_s)!=0 || val_s.len == 0 || val_s.s == NULL) { LM_WARN("cannot get string for value\n"); return -1; } if ( unset_dlg_profile( dlg, &val_s, (struct dlg_profile_table*)profile) < 0 ) { LM_ERR("failed to unset profile\n"); return -1; } } else { if ( unset_dlg_profile( dlg, NULL, (struct dlg_profile_table*)profile) < 0 ) { LM_ERR("failed to unset profile\n"); return -1; } } return 1; }