]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Use the right pthread lock and condition when waiting.
authorJoshua Colp <jcolp@digium.com>
Mon, 19 May 2008 16:50:52 +0000 (16:50 +0000)
committerJoshua Colp <jcolp@digium.com>
Mon, 19 May 2008 16:50:52 +0000 (16:50 +0000)
(closes issue #12664)
Reported by: tomo1657
Patches:
      res_smdi.c.patch uploaded by tomo1657 (license 484)

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

res/res_smdi.c

index 9315cf973241968ba2686e087200a9741c6e0409..b6a0b4593bf82d8a29a2ef61e1580e11bbba1946 100644 (file)
@@ -394,6 +394,19 @@ static void *smdi_message_wait(struct ast_smdi_interface *iface, int timeout,
        struct timeval start;
        long diff = 0;
        void *msg;
+       ast_cond_t *cond = NULL;
+       ast_mutex_t *lock = NULL;
+
+       switch (type) {
+       case SMDI_MWI:
+               cond = &iface->mwi_q_cond;
+               lock = &iface->mwi_q_lock;
+               break;
+       case SMDI_MD:
+               cond = &iface->md_q_cond;
+               lock = &iface->md_q_lock;
+               break;
+       }
 
        start = ast_tvnow();
        while (diff < timeout) {
@@ -414,7 +427,7 @@ static void *smdi_message_wait(struct ast_smdi_interface *iface, int timeout,
                /* If there were no messages in the queue, then go to sleep until one
                 * arrives. */
 
-               ast_cond_timedwait(&iface->md_q_cond, &iface->md_q_lock, &ts);
+               ast_cond_timedwait(cond, lock, &ts);
 
                if ((msg = smdi_msg_find(iface, type, station))) {
                        unlock_msg_q(iface, type);