[asterisk-commits] branch bweschke/polycom_acd_functions - r8043
/team/bweschke/polycom_acd_func...
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Thu Jan 12 20:52:29 CST 2006
Author: bweschke
Date: Thu Jan 12 20:52:27 2006
New Revision: 8043
URL: http://svn.digium.com/view/asterisk?rev=8043&view=rev
Log:
Basic avail/unavail complete. TODO: Still need to add some sanity checking when breaking down the NOTIFY
Modified:
team/bweschke/polycom_acd_functions/channels/chan_sip.c
Modified: team/bweschke/polycom_acd_functions/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/bweschke/polycom_acd_functions/channels/chan_sip.c?rev=8043&r1=8042&r2=8043&view=diff
==============================================================================
--- team/bweschke/polycom_acd_functions/channels/chan_sip.c (original)
+++ team/bweschke/polycom_acd_functions/channels/chan_sip.c Thu Jan 12 20:52:27 2006
@@ -58,6 +58,7 @@
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/agents.h"
+#include "asterisk/queues.h"
#include "asterisk/lock.h"
#include "asterisk/channel.h"
#include "asterisk/config.h"
@@ -11294,6 +11295,8 @@
int debug = sip_debug_test_pvt(p);
char *e;
int error = 0;
+ int x = 0;
+ char *agentinterface = NULL, *tmp = NULL;
/* Clear out potential response */
memset(&resp, 0, sizeof(resp));
@@ -11446,6 +11449,36 @@
case SIP_NOTIFY:
/* XXX we get NOTIFY's from some servers. WHY?? Maybe we should
look into this someday XXX */
+ if (debug) {
+ x = 0;
+ while (x < req->lines) {
+ ast_log(LOG_DEBUG, "%d: %s\n", x, req->line[x]);
+ x++;
+ }
+
+ }
+ if (req->lines == 6) {
+ agentinterface = strstr(req->line[1], "sip:");
+ if (agentinterface) {
+ agentinterface += 4;
+ tmp = strchr(agentinterface, '@');
+ if (tmp) {
+ *tmp = '\0';
+ if (strstr(req->line[3], "<basic>open")) {
+ ast_log(LOG_NOTICE, "SIP Device is requesting agent %s be unpaused.\n", agentinterface);
+ tmp = ast_strdupa(agentinterface);
+ sprintf(tmp, "Agent/%s", agentinterface);
+ ast_queuemember_callback_unpause(tmp);
+ }
+ if (strstr(req->line[3], "<basic>closed")) {
+ ast_log(LOG_NOTICE, "SIP Device is requesting agent %s be paused.\n", agentinterface);
+ tmp = ast_strdupa(agentinterface);
+ sprintf(tmp, "Agent/%s", agentinterface);
+ ast_queuemember_callback_pause(tmp);
+ }
+ }
+ }
+ }
transmit_response(p, "200 OK", req);
if (!p->lastinvite)
ast_set_flag(p, SIP_NEEDDESTROY);
More information about the asterisk-commits
mailing list