Mercurial > pidgin
comparison libpurple/protocols/oscar/family_icbm.c @ 32819:2c6510167895 default tip
propagate from branch 'im.pidgin.pidgin.2.x.y' (head 3315c5dfbd0ad16511bdcf865e5b07c02d07df24)
to branch 'im.pidgin.pidgin' (head cbd1eda6bcbf0565ae7766396bb8f6f419cb6a9a)
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Sat, 02 Jun 2012 02:30:49 +0000 |
parents | 069919a0896c |
children |
comparison
equal
deleted
inserted
replaced
32818:01ff09d4a463 | 32819:2c6510167895 |
---|---|
647 FlapConnection *conn; | 647 FlapConnection *conn; |
648 ByteStream bs; | 648 ByteStream bs; |
649 aim_snacid_t snacid; | 649 aim_snacid_t snacid; |
650 GSList *outer_tlvlist = NULL, *inner_tlvlist = NULL; | 650 GSList *outer_tlvlist = NULL, *inner_tlvlist = NULL; |
651 ByteStream hdrbs; | 651 ByteStream hdrbs; |
652 | |
653 g_return_if_fail(bn != NULL); | |
654 g_return_if_fail(ip != NULL); | |
652 | 655 |
653 conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM); | 656 conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM); |
654 if (conn == NULL) | 657 if (conn == NULL) |
655 return; | 658 return; |
656 | 659 |
1939 | 1942 |
1940 fmt = "<N><QUERY><Q><PluginID>srvMng</PluginID></Q></QUERY><NOTIFY><srv><id>cAwaySrv</id><req><id>AwayStat</id><trans>2</trans><senderId>%s</senderId></req></srv></NOTIFY></N>\r\n"; | 1943 fmt = "<N><QUERY><Q><PluginID>srvMng</PluginID></Q></QUERY><NOTIFY><srv><id>cAwaySrv</id><req><id>AwayStat</id><trans>2</trans><senderId>%s</senderId></req></srv></NOTIFY></N>\r\n"; |
1941 | 1944 |
1942 account = purple_connection_get_account(od->gc); | 1945 account = purple_connection_get_account(od->gc); |
1943 | 1946 |
1944 statxml = g_strdup_printf(fmt, account->username); | 1947 statxml = g_strdup_printf(fmt, purple_account_get_username(account)); |
1945 xmllen = strlen(statxml); | 1948 xmllen = strlen(statxml); |
1946 | 1949 |
1947 aim_icbm_makecookie(cookie); | 1950 aim_icbm_makecookie(cookie); |
1948 | 1951 |
1949 byte_stream_new(&bs, 10 + 8 + 2 + 1 + strlen(sn) + 2 | 1952 byte_stream_new(&bs, 10 + 8 + 2 + 1 + strlen(sn) + 2 |
2033 return -EINVAL; | 2036 return -EINVAL; |
2034 | 2037 |
2035 /* if (!strcmp(account->username, sn)) | 2038 /* if (!strcmp(account->username, sn)) |
2036 icq_im_xstatus_request(od, sn); */ | 2039 icq_im_xstatus_request(od, sn); */ |
2037 | 2040 |
2038 status = purple_presence_get_active_status(account->presence); | 2041 status = purple_presence_get_active_status(purple_account_get_presence(account)); |
2039 if (!status) | 2042 if (!status) |
2040 return -EINVAL; | 2043 return -EINVAL; |
2041 | 2044 |
2042 title = purple_status_get_name(status); | 2045 title = purple_status_get_name(status); |
2043 if (!title) | 2046 if (!title) |
2049 | 2052 |
2050 msg = purple_markup_strip_html(formatted_msg); | 2053 msg = purple_markup_strip_html(formatted_msg); |
2051 if (!msg) | 2054 if (!msg) |
2052 return -EINVAL; | 2055 return -EINVAL; |
2053 | 2056 |
2054 statxml = g_strdup_printf(fmt, account->username, title, msg); | 2057 statxml = g_strdup_printf(fmt, purple_account_get_username(account), title, msg); |
2055 len = strlen(statxml); | 2058 len = strlen(statxml); |
2056 | 2059 |
2057 purple_debug_misc("oscar", "X-Status AutoReply: %s, %s\n", formatted_msg, msg); | 2060 purple_debug_misc("oscar", "X-Status AutoReply: %s, %s\n", formatted_msg, msg); |
2058 | 2061 |
2059 byte_stream_new(&bs, 10 + 8 + 2 + 1 + strlen(sn) + 2 + sizeof(plugindata) + len); /* 16 extra */ | 2062 byte_stream_new(&bs, 10 + 8 + 2 + 1 + strlen(sn) + 2 + sizeof(plugindata) + len); /* 16 extra */ |
2090 | 2093 |
2091 byte_stream_advance(bs, 8); /* ICBM cookie */ | 2094 byte_stream_advance(bs, 8); /* ICBM cookie */ |
2092 channel = byte_stream_get16(bs); | 2095 channel = byte_stream_get16(bs); |
2093 bnlen = byte_stream_get8(bs); | 2096 bnlen = byte_stream_get8(bs); |
2094 bn = byte_stream_getstr(bs, bnlen); | 2097 bn = byte_stream_getstr(bs, bnlen); |
2098 if (!g_utf8_validate(bn, -1, NULL)) { | |
2099 purple_debug_warning("oscar", "Received SNAC %04hx/%04hx with " | |
2100 "invalid UTF-8 buddy name.\n", snac->family, snac->subtype); | |
2101 g_free(bn); | |
2102 return 1; | |
2103 } | |
2095 event = byte_stream_get16(bs); | 2104 event = byte_stream_get16(bs); |
2096 | 2105 |
2097 if ((userfunc = aim_callhandler(od, snac->family, snac->subtype))) | 2106 if ((userfunc = aim_callhandler(od, snac->family, snac->subtype))) |
2098 ret = userfunc(od, conn, frame, channel, bn, event); | 2107 ret = userfunc(od, conn, frame, channel, bn, event); |
2099 | 2108 |