FS-6281 --resolve mod_rayo timestamp presence events
This commit is contained in:
parent
0c0a4867aa
commit
f9337a6a70
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue