Merged revisions 169867 via svnmerge from
authorJoshua Colp <jcolp@digium.com>
Wed, 21 Jan 2009 23:25:27 +0000 (23:25 +0000)
committerJoshua Colp <jcolp@digium.com>
Wed, 21 Jan 2009 23:25:27 +0000 (23:25 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r169867 | file | 2009-01-21 19:20:47 -0400 (Wed, 21 Jan 2009) | 4 lines

  Read lock the contexts to maintain the locking order when we are notified that the state of a device has changed.
  (closes issue #13839)
  Reported by: mcallist
........

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

main/pbx.c

index b62314a..1e04013 100644 (file)
@@ -3774,6 +3774,8 @@ static int handle_statechange(void *datap)
 {
        struct ast_hint *hint;
        struct statechange *sc = datap;
+
+       ast_rdlock_contexts();
        AST_RWLIST_RDLOCK(&hints);
 
        AST_RWLIST_TRAVERSE(&hints, hint, list) {
@@ -3812,6 +3814,7 @@ static int handle_statechange(void *datap)
                hint->laststate = state;        /* record we saw the change */
        }
        AST_RWLIST_UNLOCK(&hints);
+       ast_unlock_contexts();
        ast_free(sc);
        return 0;
 }