From 41894bea92b7d2079fd666a3186b84ff92a5e0e5 Mon Sep 17 00:00:00 2001 From: Michiel van Baak Date: Mon, 10 Aug 2009 18:01:47 +0000 Subject: [PATCH] add manager events when a skinny device registers/unregisters like we have in chan_sip (closes issue #15499) Reported by: arifzaman Patches: 2009072600-skinnymanagerevents.diff.txt uploaded by mvanbaak (license 7) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@211475 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_skinny.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index edaf148d80..86f3a7e3f6 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -1904,6 +1904,7 @@ static int skinny_register(struct skinny_req *req, struct skinnysession *s) AST_LIST_TRAVERSE(&d->lines, l, list) { /* FIXME: All sorts of issues will occur if this line is already connected to a device */ if (l->device) { + manager_event(EVENT_FLAG_SYSTEM, "PeerStatus", "ChannelType: Skinny\r\nPeer: Skinny/%s@%s\r\nPeerStatus: Rejected\r\nCause: LINE_ALREADY_CONNECTED\r\n", l->name, l->device->name); ast_verb(1, "Line %s already connected to %s. Not connecting to %s.\n", l->name, l->device->name, d->name); } else { l->device = d; @@ -1917,6 +1918,7 @@ static int skinny_register(struct skinny_req *req, struct skinnysession *s) l->instance = instance; l->newmsgs = ast_app_has_voicemail(l->mailbox, NULL); set_callforwards(l, NULL, 0); + manager_event(EVENT_FLAG_SYSTEM, "PeerStatus", "ChannelType: Skinny\r\nPeer: Skinny/%s@%s\r\nPeerStatus: Registered\r\n", l->name, d->name); register_exten(l); /* initialize MWI on line and device */ mwi_event_cb(0, l); @@ -1956,6 +1958,7 @@ static int skinny_unregister(struct skinny_req *req, struct skinnysession *s) l->capability = 0; ast_parse_allow_disallow(&l->prefs, &l->capability, "all", 0); l->instance = 0; + manager_event(EVENT_FLAG_SYSTEM, "PeerStatus", "ChannelType: Skinny\r\nPeer: Skinny/%s@%s\r\nPeerStatus: Unregistered\r\n", l->name, d->name); unregister_exten(l); ast_devstate_changed(AST_DEVICE_UNAVAILABLE, "Skinny/%s@%s", l->name, d->name); } @@ -7435,6 +7438,7 @@ static int unload_module(void) if (l->mwi_event_sub) ast_event_unsubscribe(l->mwi_event_sub); ast_mutex_unlock(&l->lock); + manager_event(EVENT_FLAG_SYSTEM, "PeerStatus", "ChannelType: Skinny\r\nPeer: Skinny/%s@%s\r\nPeerStatus: Unregistered\r\n", l->name, d->name); unregister_exten(l); } if (s->fd > -1)