]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetdm: Only hangup with user message when release location information is set
authorJames Zhang <jzhang@sangoma.com>
Mon, 30 Jan 2012 23:02:26 +0000 (18:02 -0500)
committerJames Zhang <jzhang@sangoma.com>
Mon, 30 Jan 2012 23:02:26 +0000 (18:02 -0500)
libs/freetdm/mod_freetdm/mod_freetdm.c

index a180f03fefb6b88c73a584aa4394a3eaddf4c20b..b78cc078d493335a9287f8c94eafa5b84ced32b4 100755 (executable)
@@ -506,10 +506,6 @@ static switch_status_t channel_on_hangup(switch_core_session_t *session)
        int chan_id = 0;
        const char *name = NULL;
 
-       ftdm_usrmsg_t usrmsg;
-       memset(&usrmsg, 0, sizeof(ftdm_usrmsg_t));
-
-
        channel = switch_core_session_get_channel(session);
        assert(channel != NULL);
 
@@ -577,19 +573,20 @@ static switch_status_t channel_on_hangup(switch_core_session_t *session)
        case FTDM_CHAN_TYPE_CAS:
        case FTDM_CHAN_TYPE_B:
                {
-                       const char *sipvar;
+                       const char *var = NULL;
                        ftdm_call_cause_t hcause = switch_channel_get_cause_q850(channel);
                        if (hcause  < 1 || hcause > 127) {
                                hcause = FTDM_CAUSE_DESTINATION_OUT_OF_ORDER;
                        }
-                       sipvar = switch_channel_get_variable(channel, "ss7_rel_loc");
-                       if (sipvar) {
-                               ftdm_usrmsg_add_var(&usrmsg, "ss7_rel_loc", sipvar);
+                       var = switch_channel_get_variable(channel, "ss7_rel_loc");
+                       if (var) {
+                               ftdm_usrmsg_t usrmsg;
+                               memset(&usrmsg, 0, sizeof(ftdm_usrmsg_t));
+                               ftdm_usrmsg_add_var(&usrmsg, "ss7_rel_loc", var);
+                               ftdm_channel_call_hangup_with_cause_ex(tech_pvt->ftdmchan, hcause, &usrmsg);
+                       } else {
+                               ftdm_channel_call_hangup_with_cause(tech_pvt->ftdmchan, hcause);
                        }
-                       /*
-                       ftdm_channel_call_hangup_with_cause(tech_pvt->ftdmchan, hcause);
-                       */
-                       ftdm_channel_call_hangup_with_cause_ex(tech_pvt->ftdmchan, hcause, &usrmsg);
                }
                break;
        default: