From: Chris Rienzo Date: Tue, 11 Mar 2014 00:10:18 +0000 (-0400) Subject: FS-6281 --resolve mod_rayo timestamp presence events X-Git-Tag: v1.2.23~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9495f2534d909e833531e44db578a73bcd8601dc;p=thirdparty%2Ffreeswitch.git FS-6281 --resolve mod_rayo timestamp presence events --- diff --git a/src/mod/event_handlers/mod_rayo/mod_rayo.c b/src/mod/event_handlers/mod_rayo/mod_rayo.c index d20e31955d..72e6e61bd9 100644 --- a/src/mod/event_handlers/mod_rayo/mod_rayo.c +++ b/src/mod/event_handlers/mod_rayo/mod_rayo.c @@ -763,6 +763,7 @@ static void stop_deliver_message_threads(void) */ void rayo_message_send(struct rayo_actor *from, const char *to, iks *payload, int dup, int reply, const char *file, int line) { + const char *msg_name; struct rayo_message *msg = malloc(sizeof(*msg)); if (dup) { msg->payload = iks_copy(payload); @@ -783,6 +784,21 @@ void rayo_message_send(struct rayo_actor *from, const char *to, iks *payload, in msg->file = strdup(file); msg->line = line; + /* add timestamp to presence events */ + msg_name = iks_name(msg->payload); + if (!zstr(msg_name) && !strcmp("presence", msg_name)) { + iks *delay = iks_insert(msg->payload, "delay"); + switch_time_exp_t tm; + char timestamp[80]; + switch_size_t retsize; + + iks_insert_attrib(delay, "xmlns", "urn:xmpp:delay"); + + switch_time_exp_tz(&tm, switch_time_now(), 0); + switch_strftime_nocheck(timestamp, &retsize, sizeof(timestamp), "%Y-%m-%dT%TZ", &tm); + iks_insert_attrib_printf(delay, "stamp", "%s", timestamp); + } + if (switch_queue_trypush(globals.msg_queue, msg) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "failed to queue message!\n"); rayo_message_destroy(msg);