summaryrefslogtreecommitdiff
path: root/channels/chan_sip.c
diff options
context:
space:
mode:
authorKevin P. Fleming <kpfleming@digium.com>2005-08-27 23:55:14 +0000
committerKevin P. Fleming <kpfleming@digium.com>2005-08-27 23:55:14 +0000
commit99929b21e47fb46df9be68cd3c3bf743e4c1aa83 (patch)
tree605762c7fa3a5ee1b627f5d611d12690568e9271 /channels/chan_sip.c
parent601e4bb78a5859c58279a3fcb97cd381c59cceb0 (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-xchannels/chan_sip.c20
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 */