Make sure no path leaves channel lock locked
authorMark Spencer <markster@digium.com>
Thu, 11 Mar 2004 18:00:08 +0000 (18:00 +0000)
committerMark Spencer <markster@digium.com>
Thu, 11 Mar 2004 18:00:08 +0000 (18:00 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2399 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_zap.c

index 1071e22..b8173e5 100755 (executable)
@@ -3463,8 +3463,10 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
                ZT_PARAMS ps;
 
                ps.channo = p->channel;
-               if (ioctl(p->subs[SUB_REAL].zfd, ZT_GET_PARAMS, &ps) < 0)
+               if (ioctl(p->subs[SUB_REAL].zfd, ZT_GET_PARAMS, &ps) < 0) {
+                       ast_mutex_unlock(&p->lock);
                        return NULL;
+               }
                p->firstradio = 1;
                p->subs[index].f.frametype = AST_FRAME_CONTROL;
                if (ps.rxisoffhook)
@@ -3580,6 +3582,7 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
                c = tdd_feed(p->tdd,readbuf,READ_SIZE);
                if (c < 0) {
                        ast_log(LOG_DEBUG,"tdd_feed failed\n");
+                       ast_mutex_unlock(&p->lock);
                        return NULL;
                }
                if (c) { /* if a char to return */