[asterisk-commits] oej: branch group/pinana-publish-1.4 r296520 - /team/group/pinana-publish-1.4...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Sun Nov 28 12:11:50 CST 2010
Author: oej
Date: Sun Nov 28 12:11:47 2010
New Revision: 296520
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=296520
Log:
Look. It actually transmits a PUBLISH. All wrong, but anyway.
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=296520&r1=296519&r2=296520
==============================================================================
--- team/group/pinana-publish-1.4/channels/chan_sip.c (original)
+++ team/group/pinana-publish-1.4/channels/chan_sip.c Sun Nov 28 12:11:47 2010
@@ -1233,10 +1233,9 @@
/*! Structure that we have one per device for keeping control of PUBLISH states */
struct sip_published_device {
- struct sip_epa_entry *status;
char name[AST_MAX_EXTENSION]; /* Device name for entry */
char pubname[AST_MAX_EXTENSION]; /* Publisher name */
- struct sip_epa_entry *epa_entry; /* EPA Entry for this entry */
+ struct sip_epa_entry *epa; /* EPA Entry for this entry */
};
static struct ao2_container *pub_dev;
@@ -2001,7 +2000,7 @@
}
/*! \brief create new unique etag */
-static char *create_new_etag()
+static char *create_new_etag(void)
{
int new_etag = ast_atomic_fetchadd_int(&esc_etag_counter, +1);
static char etagtext[AST_MAX_EXTENSION];
@@ -8043,6 +8042,7 @@
add_header(req, "Remote-Party-ID", p->rpid);
}
+/*! \brief Publish an event state message */
static int transmit_publish(struct sip_epa_entry *epa_entry, enum sip_publish_type publish_type, const char * const explicit_uri)
{
struct sip_pvt *pvt;
@@ -9876,6 +9876,7 @@
static void pubdev_destructor(void *data)
{
struct sip_published_device *device = data;
+ ast_free(device->epa);
ao2_unlink(pub_dev, device);
}
@@ -9915,7 +9916,10 @@
/* At this point we have a device state change to publish to one presence server. */
if (!found) {
+ char uri[SIPBUFSIZE];
+
ast_log(LOG_DEBUG, "*** Creating new publish device for %s\n", sc->dev);
+ snprintf(uri, sizeof(uri), "sip:%s at edvina.net", sc->dev);
device = ao2_alloc(sizeof(struct sip_published_device), pubdev_destructor);
ast_copy_string(device->name, sc->dev, sizeof(device->name));
ast_copy_string(device->pubname, pres_server->name, sizeof(device->pubname));
@@ -9923,7 +9927,14 @@
ao2_link(pub_dev, device);
/* Do stuff here */
publish_type = SIP_PUBLISH_INITIAL;
+ device->epa = ast_calloc(1, sizeof(struct sip_epa_entry));
+ ast_copy_string(device->epa->body, "FNULHAKE\nGNURP", sizeof(device->epa->body));
+ ast_copy_string(device->epa->destination, "jarl.webway.se", sizeof(device->epa->body));
+ device->epa->publish_type = publish_type;
+ ast_copy_string(device->epa->entity_tag, create_new_etag(), sizeof(device->epa->entity_tag));
ast_log(LOG_DEBUG, "*** Created new publish device for %s\n", sc->dev);
+ transmit_publish(device->epa, publish_type, uri);
+ ast_log(LOG_DEBUG, "*** Published update for device %s\n", sc->dev);
}
return 0;
}
More information about the asterisk-commits
mailing list