Properly copy/remove the device state cache flag over a masquerade.
authorWalter Doekes <walter+asterisk@wjd.nu>
Fri, 18 Oct 2013 14:50:27 +0000 (14:50 +0000)
committerWalter Doekes <walter+asterisk@wjd.nu>
Fri, 18 Oct 2013 14:50:27 +0000 (14:50 +0000)
commitf33e0776ec765b92dba20ffed497688684a902bf
tree4793b5d1ff8e05f2f2656cd475afb69d06a53d15
parent42f3cae1fd3ae84b79f5b0b63d6a410be9f946eb
Properly copy/remove the device state cache flag over a masquerade.

In r378303 the AST_FLAG_DISABLE_DEVSTATE_CACHE flag was added that tells
the devstate system to not cache states for non-real devices. However,
when optimizing away channels (ast_do_masquerade), that flag wasn't
copied.

In my case, using Local devices as queue members created a situation
where the endpoint was considered in use, but the state change of the
device being available again was ignored (not cached). The endpoint
channel was optimized into the (previously) Local channel, but kept
the do-not-cache flag. The end result being that the queue member
apparently stayed in use forever.

(closes issue ASTERISK-22718)
Reported by: Walter Doekes

Review: https://reviewboard.asterisk.org/r/2925/
........

Merged revisions 401178 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 401179 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 401180 from http://svn.asterisk.org/svn/asterisk/branches/12

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