aboutsummaryrefslogtreecommitdiffstats
path: root/channel.c
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2005-09-01 22:28:33 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2005-09-01 22:28:33 +0000
commit5e2f0a65d097b1a16083d997b6f685b3a5c17525 (patch)
tree615dd86d4ac07062eedee46c34978b96272feba4 /channel.c
parent90521d3f603d399c3da2be87483468d638362745 (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-xchannel.c47
1 files changed, 19 insertions, 28 deletions
diff --git a/channel.c b/channel.c
index 7e63bbb2a..34ae2bf7d 100755
--- a/channel.c
+++ b/channel.c
@@ -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;
}