|
|
|
|
@ -1309,7 +1309,7 @@ static void xmpp_pubsub_subscribe(struct ast_xmpp_client *client, const char *no
|
|
|
|
|
*/
|
|
|
|
|
static int xmpp_pubsub_handle_event(void *data, ikspak *pak)
|
|
|
|
|
{
|
|
|
|
|
char *item_id, *device_state, *context, *cachable_str;
|
|
|
|
|
char *item_id, *device_state, *mailbox, *cachable_str;
|
|
|
|
|
int oldmsgs, newmsgs;
|
|
|
|
|
iks *item, *item_content;
|
|
|
|
|
struct ast_eid pubsub_eid;
|
|
|
|
|
@ -1341,15 +1341,16 @@ static int xmpp_pubsub_handle_event(void *data, ikspak *pak)
|
|
|
|
|
return IKS_FILTER_EAT;
|
|
|
|
|
}
|
|
|
|
|
} else if (!strcasecmp(iks_name(item_content), "mailbox")) {
|
|
|
|
|
context = strsep(&item_id, "@");
|
|
|
|
|
mailbox = strsep(&item_id, "@");
|
|
|
|
|
sscanf(iks_find_cdata(item_content, "OLDMSGS"), "%10d", &oldmsgs);
|
|
|
|
|
sscanf(iks_find_cdata(item_content, "NEWMSGS"), "%10d", &newmsgs);
|
|
|
|
|
if (!(event = ast_event_new(AST_EVENT_MWI, AST_EVENT_IE_MAILBOX,
|
|
|
|
|
AST_EVENT_IE_PLTYPE_STR, context, AST_EVENT_IE_CONTEXT,
|
|
|
|
|
AST_EVENT_IE_PLTYPE_STR, item_id, AST_EVENT_IE_OLDMSGS,
|
|
|
|
|
AST_EVENT_IE_PLTYPE_UINT, oldmsgs, AST_EVENT_IE_NEWMSGS,
|
|
|
|
|
AST_EVENT_IE_PLTYPE_UINT, newmsgs, AST_EVENT_IE_EID, AST_EVENT_IE_PLTYPE_RAW,
|
|
|
|
|
&pubsub_eid, sizeof(pubsub_eid), AST_EVENT_IE_END))) {
|
|
|
|
|
if (!(event = ast_event_new(AST_EVENT_MWI,
|
|
|
|
|
AST_EVENT_IE_MAILBOX, AST_EVENT_IE_PLTYPE_STR, mailbox,
|
|
|
|
|
AST_EVENT_IE_CONTEXT, AST_EVENT_IE_PLTYPE_STR, item_id,
|
|
|
|
|
AST_EVENT_IE_OLDMSGS, AST_EVENT_IE_PLTYPE_UINT, oldmsgs,
|
|
|
|
|
AST_EVENT_IE_NEWMSGS, AST_EVENT_IE_PLTYPE_UINT, newmsgs,
|
|
|
|
|
AST_EVENT_IE_EID, AST_EVENT_IE_PLTYPE_RAW, &pubsub_eid, sizeof(pubsub_eid),
|
|
|
|
|
AST_EVENT_IE_END))) {
|
|
|
|
|
return IKS_FILTER_EAT;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
|