[svn-commits] oej: branch group/pinana-publish-1.4 r296515 - /team/group/pinana-publish-1.4...
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Sun Nov 28 05:08:07 CST 2010
Author: oej
Date: Sun Nov 28 05:08:03 2010
New Revision: 296515
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=296515
Log:
Moving building of notify XML out of transmit_state_notify()
Modified:
team/group/pinana-publish-1.4/channels/chan_sip.c
Modified: team/group/pinana-publish-1.4/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/group/pinana-publish-1.4/channels/chan_sip.c?view=diff&rev=296515&r1=296514&r2=296515
==============================================================================
--- team/group/pinana-publish-1.4/channels/chan_sip.c (original)
+++ team/group/pinana-publish-1.4/channels/chan_sip.c Sun Nov 28 05:08:03 2010
@@ -1169,7 +1169,7 @@
AST_LIST_ENTRY(pubsub_filter) next;
};
-/*! Presence server ??? */
+/*! Presence server definition */
struct sip_publisher {
AST_DECLARE_STRING_FIELDS(
AST_STRING_FIELD(name);
@@ -8153,6 +8153,25 @@
return send_request(p, &req, init ? XMIT_CRITICAL : XMIT_RELIABLE, p->ocseq);
}
+/*! \brief Build XML body in dialog-info format for notify and publish */
+static void presence_build_dialoginfo_xml(char *t, size_t *maxbytes, int state, const char *statestring, struct sip_pvt *p, int full, char *mto)
+{
+ ast_build_string(&t, maxbytes, "<?xml version=\"1.0\"?>\n");
+ ast_build_string(&t, maxbytes, "<dialog-info xmlns=\"urn:ietf:params:xml:ns:dialog-info\" version=\"%d\" state=\"%s\" entity=\"%s\">\n", p->dialogver++, full ? "full":"partial", mto);
+ if ((state & AST_EXTENSION_RINGING) && global_notifyringing) {
+ ast_build_string(&t, maxbytes, "<dialog id=\"%s\" direction=\"recipient\">\n", p->exten);
+ } else {
+ ast_build_string(&t, maxbytes, "<dialog id=\"%s\">\n", p->exten);
+ }
+ ast_build_string(&t, &maxbytes, "<state>%s</state>\n", statestring);
+ if (state == AST_EXTENSION_ONHOLD) {
+ ast_build_string(&t, maxbytes, "<local>\n<target uri=\"%s\">\n"
+ "<param pname=\"+sip.rendering\" pvalue=\"no\"/>\n"
+ "</target>\n</local>\n", mto);
+ }
+ ast_build_string(&t, maxbytes, "</dialog>\n</dialog-info>\n");
+}
+
/*! \brief Used in the SUBSCRIBE notification subsystem */
static int transmit_state_notify(struct sip_pvt *p, int state, int full, int timeout)
{
@@ -8307,19 +8326,7 @@
ast_build_string(&t, &maxbytes, "</tuple>\n</presence>\n");
break;
case DIALOG_INFO_XML: /* SNOM subscribes in this format */
- ast_build_string(&t, &maxbytes, "<?xml version=\"1.0\"?>\n");
- ast_build_string(&t, &maxbytes, "<dialog-info xmlns=\"urn:ietf:params:xml:ns:dialog-info\" version=\"%d\" state=\"%s\" entity=\"%s\">\n", p->dialogver++, full ? "full":"partial", mto);
- if ((state & AST_EXTENSION_RINGING) && global_notifyringing)
- ast_build_string(&t, &maxbytes, "<dialog id=\"%s\" direction=\"recipient\">\n", p->exten);
- else
- ast_build_string(&t, &maxbytes, "<dialog id=\"%s\">\n", p->exten);
- ast_build_string(&t, &maxbytes, "<state>%s</state>\n", statestring);
- if (state == AST_EXTENSION_ONHOLD) {
- ast_build_string(&t, &maxbytes, "<local>\n<target uri=\"%s\">\n"
- "<param pname=\"+sip.rendering\" pvalue=\"no\"/>\n"
- "</target>\n</local>\n", mto);
- }
- ast_build_string(&t, &maxbytes, "</dialog>\n</dialog-info>\n");
+ presence_build_dialoginfo_xml(t, &maxbytes, state, statestring, p, full, mto);
break;
case NONE:
default:
@@ -9837,10 +9844,11 @@
return 0;
}
-static int sip_devicestate_publish(struct sip_publisher *p, struct statechange *sc)
+static int sip_devicestate_publish(struct sip_publisher *pres_server, struct statechange *sc)
{
/* XXX MARQUIS Just a template for now */
- ast_log(LOG_DEBUG, "---PUBLISH: publishing device state changes for %s\n", sc->dev);
+ ast_log(LOG_DEBUG, "---PUBLISH: publishing device state changes to %s for %s\n", pres_server->name, sc->dev);
+ /* At this point we have a device state change to publish to one presence server. */
return 0;
}
More information about the svn-commits
mailing list