Don't retry lock if there is no channel
authorMark Spencer <markster@digium.com>
Tue, 8 Jul 2003 18:50:02 +0000 (18:50 +0000)
committerMark Spencer <markster@digium.com>
Tue, 8 Jul 2003 18:50:02 +0000 (18:50 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1167 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_agent.c

index 0e90ac3..29dc13a 100755 (executable)
@@ -438,10 +438,12 @@ static struct ast_channel *agent_new(struct agent_pvt *p, int state)
                p->app_sleep_cond = 0;
                if( pthread_mutex_trylock(&p->app_lock) )
                {
                p->app_sleep_cond = 0;
                if( pthread_mutex_trylock(&p->app_lock) )
                {
-                       ast_queue_frame(p->chan, &null_frame, 1);
-                       ast_pthread_mutex_unlock(&p->lock);     /* For other thread to read the condition. */
-                       ast_pthread_mutex_lock(&p->app_lock);
-                       ast_pthread_mutex_lock(&p->lock);
+                       if (p->chan) {
+                               ast_queue_frame(p->chan, &null_frame, 1);
+                               ast_pthread_mutex_unlock(&p->lock);     /* For other thread to read the condition. */
+                               ast_pthread_mutex_lock(&p->app_lock);
+                               ast_pthread_mutex_lock(&p->lock);
+                       }
                        if( !p->chan )
                        {
                                ast_log(LOG_WARNING, "Agent disconnected while we were connecting the call\n");
                        if( !p->chan )
                        {
                                ast_log(LOG_WARNING, "Agent disconnected while we were connecting the call\n");