diff options
author | Kevin P. Fleming <kpfleming@digium.com> | 2005-08-27 23:55:14 +0000 |
---|---|---|
committer | Kevin P. Fleming <kpfleming@digium.com> | 2005-08-27 23:55:14 +0000 |
commit | 99929b21e47fb46df9be68cd3c3bf743e4c1aa83 (patch) | |
tree | 605762c7fa3a5ee1b627f5d611d12690568e9271 /channels/chan_sip.c | |
parent | 601e4bb78a5859c58279a3fcb97cd381c59cceb0 (diff) |
preserve hint watchers and laststate across 'extensions reload' (issue #2522)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6431 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_sip.c')
-rwxr-xr-x | channels/chan_sip.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index f56f2fe88..317011140 100755 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -5733,20 +5733,24 @@ static int check_auth(struct sip_pvt *p, struct sip_request *req, char *randdata } /*--- cb_extensionstate: Part of thte SUBSCRIBE support subsystem ---*/ -static int cb_extensionstate(char *context, char* exten, int state, void *data) +static int cb_extensionstate(char *context, char* exten, enum ast_extension_states state, void *data) { struct sip_pvt *p = data; - if (state == -1) { + + switch (state) { + case AST_EXTENSION_DEACTIVATED: + case AST_EXTENSION_REMOVED: + transmit_state_notify(p, state, 1); sip_scheddestroy(p, 15000); p->stateid = -1; return 0; + default: + transmit_state_notify(p, state, 1); + + if (option_debug > 1) + ast_verbose(VERBOSE_PREFIX_1 "Extension Changed %s new state %d for Notify User %s\n", exten, state, p->username); + return 0; } - - transmit_state_notify(p, state, 1); - - if (option_debug > 1) - ast_verbose(VERBOSE_PREFIX_1 "Extension Changed %s new state %d for Notify User %s\n", exten, state, p->username); - return 0; } /*--- register_verify: Verify registration of user */ |