diff options
author | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-09-01 22:28:33 +0000 |
---|---|---|
committer | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-09-01 22:28:33 +0000 |
commit | 5e2f0a65d097b1a16083d997b6f685b3a5c17525 (patch) | |
tree | 615dd86d4ac07062eedee46c34978b96272feba4 /channel.c | |
parent | 90521d3f603d399c3da2be87483468d638362745 (diff) |
various devicestate fixes (issue #5081, take two)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6496 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channel.c')
-rwxr-xr-x | channel.c | 47 |
1 files changed, 19 insertions, 28 deletions
@@ -2808,34 +2808,25 @@ void ast_set_callerid(struct ast_channel *chan, const char *callerid, const char int ast_setstate(struct ast_channel *chan, int state) { - if (chan->_state != state) { - int oldstate = chan->_state; - chan->_state = state; - if (oldstate == AST_STATE_DOWN) { - ast_device_state_changed(chan->name); - manager_event(EVENT_FLAG_CALL, "Newchannel", - "Channel: %s\r\n" - "State: %s\r\n" - "CallerID: %s\r\n" - "CallerIDName: %s\r\n" - "Uniqueid: %s\r\n", - chan->name, ast_state2str(chan->_state), - chan->cid.cid_num ? chan->cid.cid_num : "<unknown>", - chan->cid.cid_name ? chan->cid.cid_name : "<unknown>", - chan->uniqueid); - } else { - manager_event(EVENT_FLAG_CALL, "Newstate", - "Channel: %s\r\n" - "State: %s\r\n" - "CallerID: %s\r\n" - "CallerIDName: %s\r\n" - "Uniqueid: %s\r\n", - chan->name, ast_state2str(chan->_state), - chan->cid.cid_num ? chan->cid.cid_num : "<unknown>", - chan->cid.cid_name ? chan->cid.cid_name : "<unknown>", - chan->uniqueid); - } - } + int oldstate = chan->_state; + + if (oldstate == state) + return 0; + + chan->_state = state; + ast_device_state_changed(chan->name); + manager_event(EVENT_FLAG_CALL, + (oldstate == AST_STATE_DOWN) ? "Newchannel" : "Newstate", + "Channel: %s\r\n" + "State: %s\r\n" + "CallerID: %s\r\n" + "CallerIDName: %s\r\n" + "Uniqueid: %s\r\n", + chan->name, ast_state2str(chan->_state), + chan->cid.cid_num ? chan->cid.cid_num : "<unknown>", + chan->cid.cid_name ? chan->cid.cid_name : "<unknown>", + chan->uniqueid); + return 0; } |