FS-6281 --resolve mod_rayo timestamp presence events

This commit is contained in:
Chris Rienzo 2014-03-10 20:10:18 -04:00
parent 0c0a4867aa
commit f9337a6a70
1 changed files with 16 additions and 0 deletions

View File

@ -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);