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>&lt;Q&gt;&lt;PluginID&gt;srvMng&lt;/PluginID&gt;&lt;/Q&gt;</QUERY><NOTIFY>&lt;srv&gt;&lt;id&gt;cAwaySrv&lt;/id&gt;&lt;req&gt;&lt;id&gt;AwayStat&lt;/id&gt;&lt;trans&gt;2&lt;/trans&gt;&lt;senderId&gt;%s&lt;/senderId&gt;&lt;/req&gt;&lt;/srv&gt;</NOTIFY></N>\r\n"; 1943 fmt = "<N><QUERY>&lt;Q&gt;&lt;PluginID&gt;srvMng&lt;/PluginID&gt;&lt;/Q&gt;</QUERY><NOTIFY>&lt;srv&gt;&lt;id&gt;cAwaySrv&lt;/id&gt;&lt;req&gt;&lt;id&gt;AwayStat&lt;/id&gt;&lt;trans&gt;2&lt;/trans&gt;&lt;senderId&gt;%s&lt;/senderId&gt;&lt;/req&gt;&lt;/srv&gt;</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