]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fix some analog issues brought about by too much concentration on digital
authorAnthony Minessale <anthony.minessale@gmail.com>
Wed, 30 Apr 2008 15:17:55 +0000 (15:17 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Wed, 30 Apr 2008 15:17:55 +0000 (15:17 +0000)
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@465 a93c3328-9c30-0410-af19-c9cd2b2d52af

libs/freetdm/.update
libs/freetdm/mod_openzap/mod_openzap.c
libs/freetdm/src/zap_analog.c

index 23063c4325d866e6d91bc04c97bc14696ae3ee64..4ad7659099e885baba360544ae30eb174e02da77 100644 (file)
@@ -1 +1 @@
-Fri Jan 25 19:07:34 EST 2008
+Wed Apr 30 10:51:26 EDT 2008
index eade1be790e9060a96eb75c274bc613d0a320ade..c9469dbb96703a637954a716bbf5f4924d1423c5 100644 (file)
@@ -159,16 +159,15 @@ static void stop_hold(const char *uuid)
                channel = switch_core_session_get_channel(session);
                switch_channel_stop_broadcast(channel);
                switch_channel_wait_for_flag(channel, CF_BROADCAST, SWITCH_FALSE, 2000);
+
                switch_core_session_rwunlock(session);
        }
 }
 
-static void start_hold(const char *uuid, const char *music)
+static void start_hold(const char *uuid, const char *stream)
 {
        switch_core_session_t *session;
        switch_channel_t *channel;
-       const char *stream = NULL;
-
 
        if (!uuid) {
                return;
@@ -177,11 +176,8 @@ static void start_hold(const char *uuid, const char *music)
        if ((session = switch_core_session_locate(uuid))) {
                channel = switch_core_session_get_channel(session);
                
-               if (!(stream = switch_channel_get_variable(channel, SWITCH_HOLD_MUSIC_VARIABLE))) {
-                       stream = music;
-                       if (switch_strlen_zero(stream)) {
-                               stream = globals.hold_music;
-                       }
+               if (switch_strlen_zero(stream) && !(stream = switch_channel_get_variable(channel, SWITCH_HOLD_MUSIC_VARIABLE))) {
+                       stream = globals.hold_music;
                }
 
                if (!switch_strlen_zero(stream)) {
index 3b1246961bc6866290c8bf400e0ce4d81fd62496..40fb6977ff0441ad0d6d3b5bcbd3e41a06ac20db 100644 (file)
@@ -416,7 +416,7 @@ static void *zap_analog_channel_run(zap_thread_t *me, void *obj)
                                break;
                        case ZAP_CHANNEL_STATE_DIALTONE:
                                {
-                                       zap_channel_done(zchan);
+                                       memset(&zchan->caller_data, 0, sizeof(zchan->caller_data));
                                        *dtmf = '\0';
                                        dtmf_offset = 0;
                                        zap_buffer_zero(dt_buffer);
@@ -447,7 +447,7 @@ static void *zap_analog_channel_run(zap_thread_t *me, void *obj)
                                break;
                        case ZAP_CHANNEL_STATE_GET_CALLERID:
                                {
-                                       zap_channel_done(zchan);
+                                       memset(&zchan->caller_data, 0, sizeof(zchan->caller_data));
                                        zap_channel_command(zchan, ZAP_COMMAND_ENABLE_CALLERID_DETECT, NULL);
                                        continue;
                                }
@@ -464,7 +464,6 @@ static void *zap_analog_channel_run(zap_thread_t *me, void *obj)
                                {
                                        zchan->caller_data.hangup_cause = ZAP_CAUSE_NORMAL_CIRCUIT_CONGESTION;
                                        if (zap_test_flag(zchan, ZAP_CHANNEL_OFFHOOK) && !zap_test_flag(zchan, ZAP_CHANNEL_OUTBOUND)) {
-                                               zap_channel_done(zchan);
                                                zap_buffer_zero(dt_buffer);
                                                teletone_run(&ts, zchan->span->tone_map[ZAP_TONEMAP_BUSY]);
                                                indicate = 1;
@@ -476,7 +475,6 @@ static void *zap_analog_channel_run(zap_thread_t *me, void *obj)
                        case ZAP_CHANNEL_STATE_ATTN:
                                {
                                        if (zap_test_flag(zchan, ZAP_CHANNEL_OFFHOOK) && !zap_test_flag(zchan, ZAP_CHANNEL_OUTBOUND)) {
-                                               zap_channel_done(zchan);
                                                zap_buffer_zero(dt_buffer);
                                                teletone_run(&ts, zchan->span->tone_map[ZAP_TONEMAP_ATTN]);
                                                indicate = 1;