]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Add missing ast_hangup() calls on some analog exception paths.
authorRichard Mudgett <rmudgett@digium.com>
Thu, 12 Jul 2012 20:15:42 +0000 (20:15 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Thu, 12 Jul 2012 20:15:42 +0000 (20:15 +0000)
Make starting analog_ss_thread() or __analog_ss_thread() failure paths
hangup the channel.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@370017 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_dahdi.c
channels/sig_analog.c

index b3dfaafe089294291a0acbaa1350904d0c451501..a26a06823041833a7e60726e8713004ad39a338c 100644 (file)
@@ -11621,6 +11621,7 @@ static struct dahdi_pvt *handle_init_event(struct dahdi_pvt *i, int event)
                                        ast_log(LOG_WARNING, "Cannot allocate new structure on channel %d\n", i->channel);
                                } else if (ast_pthread_create_detached(&threadid, NULL, analog_ss_thread, chan)) {
                                        ast_log(LOG_WARNING, "Unable to start simple switch thread on channel %d\n", i->channel);
+                                       ast_hangup(chan);
                                }
                        }
                        break;
@@ -11888,6 +11889,7 @@ static void *do_monitor(void *data)
                                                                                        res = ast_pthread_create_detached(&threadid, NULL, analog_ss_thread, chan);
                                                                                        if (res) {
                                                                                                ast_log(LOG_WARNING, "Unable to start simple switch thread on channel %d\n", i->channel);
+                                                                                               ast_hangup(chan);
                                                                                        } else {
                                                                                                i->dtmfcid_holdoff_state = 1;
                                                                                        }
index 0a336b313de6adbcc2afc4078f976f0b0c92f8f7..555997dec9423dd3bb783ca46daf224fa092605a 100644 (file)
@@ -3831,6 +3831,7 @@ void *analog_handle_init_event(struct analog_pvt *i, int event)
                                        ast_log(LOG_WARNING, "Cannot allocate new structure on channel %d\n", i->channel);
                                } else if (ast_pthread_create_detached(&threadid, NULL, __analog_ss_thread, i)) {
                                        ast_log(LOG_WARNING, "Unable to start simple switch thread on channel %d\n", i->channel);
+                                       ast_hangup(chan);
                                }
                        }
                        break;
@@ -3855,6 +3856,7 @@ void *analog_handle_init_event(struct analog_pvt *i, int event)
                                        ast_log(LOG_WARNING, "Cannot allocate new structure on channel %d\n", i->channel);
                                } else if (ast_pthread_create_detached(&threadid, NULL, __analog_ss_thread, i)) {
                                        ast_log(LOG_WARNING, "Unable to start simple switch thread on channel %d\n", i->channel);
+                                       ast_hangup(chan);
                                }
                        }
                        break;