Merged revisions 117135 via svnmerge from
authorJoshua Colp <jcolp@digium.com>
Mon, 19 May 2008 16:53:33 +0000 (16:53 +0000)
committerJoshua Colp <jcolp@digium.com>
Mon, 19 May 2008 16:53:33 +0000 (16:53 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r117135 | file | 2008-05-19 13:50:52 -0300 (Mon, 19 May 2008) | 6 lines

Use the right pthread lock and condition when waiting.
(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/trunk@117136 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_smdi.c

index 97b58b5..9bcccab 100644 (file)
@@ -419,6 +419,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();
 
@@ -440,7 +453,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, search_key, options))) {
                        unlock_msg_q(iface, type);