Mercurial > hg
diff mcabber/src/jabglue.c @ 91:60eac956ce18
[/trunk] Changeset 105 by mikael
* Jabber agents support
* TODO update
author | mikael |
---|---|
date | Mon, 18 Apr 2005 18:12:50 +0000 |
parents | 0bd578421ce9 |
children | edb5591e2e64 |
line wrap: on
line diff
--- a/mcabber/src/jabglue.c Mon Apr 18 17:50:11 2005 +0000 +++ b/mcabber/src/jabglue.c Mon Apr 18 18:12:50 2005 +0000 @@ -398,7 +398,7 @@ void packethandler(jconn conn, jpacket packet) { - char *p; + char *p, *r; xmlnode x, y; // string from, type, body, enc, ns, id, u, h, s; char *from=NULL, *type=NULL, *body=NULL, *enc=NULL; @@ -406,7 +406,6 @@ char *id=NULL; enum imstatus ust; // int npos; - // bool isagent; jpacket_reset(packet); @@ -627,9 +626,13 @@ if (type && !strcmp(type, "unavailable")) { ust = offline; } - // scr_LogPrint("New status: ust=%d (%s)", ust, from); - roster_setstatus(jidtodisp(from), ust); // XXX memory leak + r = jidtodisp(from); + if (ust != roster_getstatus(r)) + scr_LogPrint("Buddy status has changed: [%c>%c] <%s>", + imstatus2char[roster_getstatus(r)], imstatus2char[ust], r); + roster_setstatus(r, ust); + free(r); buddylist_build(); scr_DrawRoster(); /* @@ -644,15 +647,19 @@ if (type) scr_LogPrint("Type=%s", type); if (!strcmp(type, "subscribe")) { - // if (!isagent) { + int isagent; + r = jidtodisp(from); + isagent = (roster_gettype(r) & ROSTER_TYPE_AGENT) != 0; + free(r); + scr_LogPrint("isagent=%d", isagent); // XXX DBG + if (!isagent) { scr_LogPrint("<%s> wants to subscribe " "to your network presence updates", from); - /*} else { - auto_ptr<char> cfrom(strdup(from.c_str())); - x = jutil_presnew(JPACKET__SUBSCRIBED, cfrom.get(), 0); + } else { + x = jutil_presnew(JPACKET__SUBSCRIBED, from, 0); jab_send(jc, x); xmlnode_free(x); - }*/ + } } else if (!strcmp(type, "unsubscribe")) { x = jutil_presnew(JPACKET__UNSUBSCRIBED, from, 0); jab_send(jc, x);