Mercurial > pidgin
changeset 27130:27ccab320d8a
merge of '3eceaa6c40cc71435a27e3175ed313c342e01062'
and 'c586c7c63e038d187f56cc31c55b1e09dec584d2'
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Sat, 20 Jun 2009 21:44:23 +0000 |
parents | bd84462b0e17 (current diff) a167106a439a (diff) |
children | c952aa75df18 |
files | |
diffstat | 27 files changed, 203 insertions(+), 181 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/connection.c Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/connection.c Sat Jun 20 21:44:23 2009 +0000 @@ -309,7 +309,7 @@ g_free(gc->password); g_free(gc->display_name); - if (gc->disconnect_timeout) + if (gc->disconnect_timeout > 0) purple_timeout_remove(gc->disconnect_timeout); PURPLE_DBUS_UNREGISTER_POINTER(gc); @@ -515,11 +515,20 @@ static gboolean purple_connection_disconnect_cb(gpointer data) { - PurpleAccount *account = data; - char *password = g_strdup(purple_account_get_password(account)); + PurpleAccount *account; + PurpleConnection *gc; + char *password; + + account = data; + gc = purple_account_get_connection(account); + + gc->disconnect_timeout = 0; + + password = g_strdup(purple_account_get_password(account)); purple_account_disconnect(account); purple_account_set_password(account, password); g_free(password); + return FALSE; } @@ -564,7 +573,7 @@ } /* If we've already got one error, we don't need any more */ - if (gc->disconnect_timeout) + if (gc->disconnect_timeout > 0) return; gc->wants_to_die = purple_connection_error_is_fatal (reason);
--- a/libpurple/connection.h Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/connection.h Sat Jun 20 21:44:23 2009 +0000 @@ -560,6 +560,9 @@ * Checks if gc is still a valid pointer to a gc. * * @return @c TRUE if gc is valid. + * + * @deprecated Do not use this. Instead, cancel your asynchronous request + * when the PurpleConnection is destroyed. */ /* * TODO: Eventually this bad boy will be removed, because it is
--- a/libpurple/network.c Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/network.c Sat Jun 20 21:44:23 2009 +0000 @@ -283,9 +283,16 @@ purple_network_finish_pmp_map_cb(gpointer data) { PurpleNetworkListenData *listen_data; + gint *key = g_new(gint, 1); + gint *value = g_new(gint, 1); listen_data = data; + /* add port mapping to hash table */ + *key = purple_network_get_port_from_fd(listen_data->listenfd); + *value = listen_data->socket_type; + g_hash_table_insert(nat_pmp_port_mappings, key, value); + if (listen_data->cb) listen_data->cb(listen_data->listenfd, listen_data->cb_data); @@ -925,6 +932,7 @@ purple_upnp_remove_port_mapping(port, protocol == SOCK_STREAM ? "TCP" : "UDP", purple_network_upnp_mapping_remove_cb, NULL); + g_hash_table_remove(upnp_port_mappings, key); } static void @@ -938,6 +946,7 @@ purple_pmp_destroy_map( protocol == SOCK_STREAM ? PURPLE_PMP_TYPE_TCP : PURPLE_PMP_TYPE_UDP, port); + g_hash_table_remove(nat_pmp_port_mappings, key); } void
--- a/libpurple/notify.h Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/notify.h Sat Jun 20 21:44:23 2009 +0000 @@ -427,7 +427,9 @@ * Displays a notification for multiple emails to the user. * * @param handle The plugin or connection handle. - * @param count The number of emails. + * @param count The number of emails. '0' can be used to signify that + * the user has no unread emails and the UI should remove + * the mail notification. * @param detailed @c TRUE if there is information for each email in the * arrays. * @param subjects The array of subjects.
--- a/libpurple/plugins/ssl/ssl-gnutls.c Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/plugins/ssl/ssl-gnutls.c Sat Jun 20 21:44:23 2009 +0000 @@ -576,7 +576,6 @@ out_buf, out_size); g_free(out_buf); - g_return_val_if_fail(success, FALSE); return success; }
--- a/libpurple/protocols/bonjour/bonjour_ft.c Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/protocols/bonjour/bonjour_ft.c Sat Jun 20 21:44:23 2009 +0000 @@ -880,7 +880,9 @@ purple_proxy_info_set_type(xf->proxy_info, PURPLE_PROXY_SOCKS5); purple_proxy_info_set_host(xf->proxy_info, xf->proxy_host); purple_proxy_info_set_port(xf->proxy_info, xf->proxy_port); - xf->proxy_connection = purple_proxy_connect_socks5(NULL, xf->proxy_info, + xf->proxy_connection = purple_proxy_connect_socks5( + purple_account_get_connection(account), + xf->proxy_info, dstaddr, 0, bonjour_bytestreams_connect_cb, xfer);
--- a/libpurple/protocols/bonjour/jabber.c Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/protocols/bonjour/jabber.c Sat Jun 20 21:44:23 2009 +0000 @@ -926,7 +926,9 @@ } purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_NONE); - connect_data = purple_proxy_connect(NULL, jdata->account, + connect_data = purple_proxy_connect( + purple_account_get_connection(jdata->account), + jdata->account, ip, bb->port_p2pj, _connected_to_buddy, pb); if (connect_data == NULL) {
--- a/libpurple/protocols/jabber/jabber.h Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/protocols/jabber/jabber.h Sat Jun 20 21:44:23 2009 +0000 @@ -325,8 +325,8 @@ void jabber_add_feature(const gchar *namespace, JabberFeatureEnabled cb); /* cb may be NULL */ void jabber_remove_feature(const gchar *namespace); -/** Adds an identitiy to this jabber library instance. For list of valid values vistit the - * webiste of the XMPP Registrar ( http://www.xmpp.org/registrar/disco-categories.html#client ). +/** Adds an identity to this jabber library instance. For list of valid values visit the + * website of the XMPP Registrar ( http://www.xmpp.org/registrar/disco-categories.html#client ). * @param category the category of the identity. * @param type the type of the identity. * @param language the language localization of the name. Can be NULL.
--- a/libpurple/protocols/msn/notification.c Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/protocols/msn/notification.c Sat Jun 20 21:44:23 2009 +0000 @@ -327,14 +327,13 @@ /* NOTE: cmd is not always cmdproc->last_cmd, sometimes cmd is a queued * command and we are processing it */ if (cmd->payload == NULL) { - cmdproc->last_cmd->payload_cb = msg_cmd_post; + cmdproc->last_cmd->payload_cb = msg_cmd_post; cmd->payload_len = atoi(cmd->params[2]); - } else { g_return_if_fail(cmd->payload_cb != NULL); #if 0 /* glib on win32 doesn't correctly support precision modifiers for a string */ - purple_debug_info("msn", "MSG payload:{%.*s}\n", cmd->payload_len, cmd->payload); + purple_debug_info("msn", "MSG payload:{%.*s}\n", (guint)cmd->payload_len, cmd->payload); #endif cmd->payload_cb(cmdproc, cmd, cmd->payload, cmd->payload_len); }
--- a/libpurple/protocols/myspace/myspace.c Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/protocols/myspace/myspace.c Sat Jun 20 21:44:23 2009 +0000 @@ -1824,17 +1824,19 @@ gchar *suggestion; suggestion = g_strdup_printf(_("%s Your password is " - "%d characters, greater than the " - "expected maximum length of %d for " - "MySpaceIM. Please shorten your " + "%zu characters, which is longer than the " + "maximum length of %d. Please shorten your " "password at http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try again."), - full_errmsg, (int) + full_errmsg, strlen(session->account->password), MSIM_MAX_PASSWORD_LENGTH); /* Replace full_errmsg. */ g_free(full_errmsg); full_errmsg = suggestion; + } else { + g_free(full_errmsg); + full_errmsg = g_strdup(_("Incorrect username or password")); } #endif break;
--- a/libpurple/protocols/oscar/oscar.c Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/protocols/oscar/oscar.c Sat Jun 20 21:44:23 2009 +0000 @@ -1833,13 +1833,6 @@ gchar *buf; gssize result; - if (!PURPLE_CONNECTION_IS_VALID(pos->gc)) - { - g_free(pos->modname); - g_free(pos); - return; - } - pos->fd = source; if (source < 0) { @@ -1937,8 +1930,7 @@ pos->len = len; pos->modname = g_strdup(modname); - /* TODO: Keep track of this return value. */ - if (purple_proxy_connect(NULL, pos->gc->account, "pidgin.im", 80, + if (purple_proxy_connect(pos->gc, pos->gc->account, "pidgin.im", 80, straight_to_hell, pos) == NULL) { char buf[256];
--- a/libpurple/protocols/sametime/sametime.c Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/protocols/sametime/sametime.c Sat Jun 20 21:44:23 2009 +0000 @@ -1466,7 +1466,7 @@ if(purple_account_get_bool(account, MW_KEY_FORCE, FALSE) || !host || (! strcmp(current_host, host)) || - (purple_proxy_connect(NULL, account, host, port, connect_cb, pd) == NULL)) { + (purple_proxy_connect(gc, account, host, port, connect_cb, pd) == NULL)) { /* if we're configured to force logins, or if we're being redirected to the already configured host, or if we couldn't
--- a/libpurple/protocols/simple/simple.c Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/protocols/simple/simple.c Sat Jun 20 21:44:23 2009 +0000 @@ -446,13 +446,6 @@ struct simple_account_data *sip; struct sip_connection *conn; - if (!PURPLE_CONNECTION_IS_VALID(gc)) - { - if (source >= 0) - close(source); - return; - } - if(source < 0) { purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, @@ -1735,13 +1728,6 @@ struct simple_account_data *sip; struct sip_connection *conn; - if (!PURPLE_CONNECTION_IS_VALID(gc)) - { - if (source >= 0) - close(source); - return; - } - if(source < 0) { purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
--- a/libpurple/protocols/yahoo/util.c Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/protocols/yahoo/util.c Sat Jun 20 21:44:23 2009 +0000 @@ -22,7 +22,7 @@ #ifdef HAVE_CONFIG_H #include "config.h" -#endif +#endif /* HAVE_CONFIG_H */ #include "debug.h" #include "internal.h" @@ -42,7 +42,7 @@ /* * Returns cookies formatted as a null terminated string for the given connection. * Must g_free return value. - * + * * TODO:will work, but must test for strict correctness */ gchar* yahoo_get_cookies(PurpleConnection *gc) @@ -191,7 +191,7 @@ /* * I found these on some website but i don't know that they actually * work (or are supposed to work). I didn't implement them yet. - * + * * [0;30m ---black * [1;37m ---white * [0;37m ---tan
--- a/libpurple/protocols/yahoo/yahoo.c Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo.c Sat Jun 20 21:44:23 2009 +0000 @@ -64,7 +64,7 @@ static void yahoo_add_buddy(PurpleConnection *gc, PurpleBuddy *, PurpleGroup *); #ifdef TRY_WEBMESSENGER_LOGIN static void yahoo_login_page_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, size_t len, const gchar *error_message); -#endif +#endif /* TRY_WEBMESSENGER_LOGIN */ static void yahoo_set_status(PurpleAccount *account, PurpleStatus *status); static void yahoo_update_status(PurpleConnection *gc, const char *name, YahooFriend *f) @@ -523,7 +523,7 @@ purple_debug_info("yahoo", "%s adding %s to the deny list because of the ignore list / no group was found\n",account->username, norm_bud); purple_privacy_deny_add(account, norm_bud, 1); } - + protocol = 0; stealth = 0; norm_bud = NULL; @@ -554,7 +554,7 @@ } g_hash_table_foreach(ht, yahoo_do_group_cleanup, NULL); - + /* Now that we have processed the buddy list, we can say yahoo has connected */ purple_connection_set_display_name(gc, purple_normalize(account, purple_account_get_username(account))); purple_connection_set_state(gc, PURPLE_CONNECTED); @@ -813,6 +813,7 @@ int time; int utf8; int buddy_icon; + char *id; char *msg; }; @@ -824,8 +825,8 @@ struct yahoo_data *yd; char *server_msg = NULL; char *m; - - yd = gc->proto_data; + + yd = gc->proto_data; account = purple_connection_get_account(gc); while (l != NULL) { @@ -858,7 +859,7 @@ } else purple_notify_error(gc, NULL, _("Your SMS was not delivered"), NULL); - + g_free(sms->from); g_free(sms); return ; @@ -871,7 +872,7 @@ m = yahoo_string_decode(gc, sms->msg, sms->utf8); serv_got_im(gc, sms->from, m, 0, sms->time); - + g_free(m); g_free(sms->from); g_free(sms); @@ -930,6 +931,9 @@ { imv = pair->value; } + if (pair->key == 429) + if (im) + im->id = pair->value; l = l->next; } } else if (pkt->status == 2) { @@ -997,6 +1001,28 @@ return; } + /* + * TODO: Is there anything else we should check when determining whether + * we should send an acknowledgement? + */ + if (im->id != NULL) { + /* Send acknowledgement. If we don't do this then the official + * Yahoo Messenger client for Windows will send us the same + * message 7 seconds later as an offline message. This is true + * for at least version 9.0.0.2162 on Windows XP. */ + struct yahoo_packet *pkt2; + pkt2 = yahoo_packet_new(YAHOO_SERVICE_MESSAGE_ACK, + YAHOO_STATUS_AVAILABLE, pkt->id); + yahoo_packet_hash(pkt2, "ssisii", + 1, purple_connection_get_display_name(gc), + 5, im->from, + 302, 430, + 430, im->id, + 303, 430, + 450, 0); + yahoo_packet_send_and_free(pkt2, yd); + } + m = yahoo_string_decode(gc, im->msg, im->utf8); /* This may actually not be necessary, but it appears * that at least at one point some clients were sending @@ -1024,7 +1050,7 @@ username = g_markup_escape_text(msn_from, -1); else username = g_markup_escape_text(im->from, -1); - + purple_prpl_got_attention(gc, username, YAHOO_BUZZ); g_free(username); g_free(m); @@ -1043,7 +1069,7 @@ g_free(m2); - /* laters : implement buddy icon for msn friends */ + /* laters : implement buddy icon for msn friends */ if(!msn) { if ((f = yahoo_friend_find(gc, im->from)) && im->buddy_icon == 2) { if (yahoo_friend_get_buddy_icon_need_request(f)) { @@ -1625,7 +1651,7 @@ purple_debug_error("yahoo", "Login Failed, unable to retrieve stage 2 url: %s\n", error_message); purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, error_message); g_free(auth_data->seed); - g_free(auth_data); + g_free(auth_data); return; } else if (len > 0 && ret_data && *ret_data) { @@ -1972,7 +1998,7 @@ { #ifdef TRY_WEBMESSENGER_LOGIN struct yahoo_data *yd = gc->proto_data; -#endif +#endif /* TRY_WEBMESSENGER_LOGIN */ GSList *l = pkt->hash; int err = 0; char *msg; @@ -2016,7 +2042,7 @@ yd->url_datas = g_slist_prepend(yd->url_datas, url_data); return; } -#endif +#endif /* TRY_WEBMESSENGER_LOGIN */ if (!purple_account_get_remember_password(account)) purple_account_set_password(account, NULL); @@ -2082,7 +2108,7 @@ return; if (!group) group = ""; - + if(msn) who = g_strconcat("msn/", temp, NULL); else @@ -2123,7 +2149,7 @@ { size_t pkt_len; guchar *raw_packet; - + /*build the raw packet and send it to the host*/ pkt_len = yahoo_packet_build(pkt, 0, 0, 0, &raw_packet); if(write(source, raw_packet, pkt_len) != pkt_len) @@ -2302,7 +2328,7 @@ yahoo_p2p_disconnect_destroy_data(data); return; } - + if(len < YAHOO_PACKET_HDRLEN) return; @@ -2311,13 +2337,11 @@ purple_debug_warning("yahoo","p2p: Got something other than YMSG packet\n"); start = memchr(buf + 1, 'Y', len - 1); - if(start) { - g_memmove(buf, start, len - (start - buf)); - len -= start - buf; - } else { - g_free(buf); + if (start == NULL) return; - } + + g_memmove(buf, start, len - (start - buf)); + len -= start - buf; } pos += 4; /* YMSG */ @@ -2442,7 +2466,7 @@ void yahoo_send_p2p_pkt(PurpleConnection *gc, const char *who, int val_13) { const char *public_ip; - guint32 temp[4]; + guint32 temp[4]; guint32 ip; char temp_str[100]; gchar *base64_ip = NULL; @@ -2463,7 +2487,7 @@ if( strcmp(purple_normalize(account, purple_account_get_username(account)), who) == 0) return; - /* send packet to only those friends who arent p2p connected and to whom we havent already sent. Do not send if this condition doesn't hold good */ + /* send packet to only those friends who arent p2p connected and to whom we havent already sent. Do not send if this condition doesn't hold good */ if( !( f && (yahoo_friend_get_p2p_status(f) == YAHOO_P2PSTATUS_NOT_CONNECTED) && (f->p2p_packet_sent == 0)) ) return; @@ -2526,7 +2550,7 @@ if(error_message != NULL) { purple_debug_warning("yahoo","p2p: %s\n",error_message); yahoo_send_p2p_pkt(p2p_data->gc, p2p_data->host_username, 2);/* send p2p init packet with val_13=2 */ - + yahoo_p2p_disconnect_destroy_data(p2p_data); return; } @@ -2647,7 +2671,7 @@ p2p_data->source = -1; /* connect to host */ - if((purple_proxy_connect(NULL, account, host_ip, YAHOO_PAGER_PORT_P2P, yahoo_p2p_init_cb, p2p_data))==NULL) { + if((purple_proxy_connect(gc, account, host_ip, YAHOO_PAGER_PORT_P2P, yahoo_p2p_init_cb, p2p_data))==NULL) { purple_debug_info("yahoo","p2p: Connection to %s failed\n", host_ip); g_free(p2p_data->host_ip); g_free(p2p_data->host_username); @@ -2965,11 +2989,6 @@ struct yahoo_data *yd; struct yahoo_packet *pkt; - if (!PURPLE_CONNECTION_IS_VALID(gc)) { - close(source); - return; - } - if (source < 0) { gchar *tmp; tmp = g_strdup_printf(_("Could not establish a connection with the server:\n%s"), @@ -2997,11 +3016,6 @@ struct yahoo_data *yd; struct yahoo_packet *pkt; - if (!PURPLE_CONNECTION_IS_VALID(gc)) { - close(source); - return; - } - if (source < 0) { gchar *tmp; tmp = g_strdup_printf(_("Could not establish a connection with the server:\n%s"), @@ -3291,7 +3305,7 @@ purple_cipher_context_destroy(context); } -#endif +#endif /* TRY_WEBMESSENGER_LOGIN */ static void yahoo_server_check(PurpleAccount *account) { @@ -3898,7 +3912,7 @@ struct yahoo_data *yd = gc->proto_data; g_return_if_fail(PURPLE_CONNECTION_IS_VALID(gc)); - + yd->url_datas = g_slist_remove(yd->url_datas, url_data); if (error_message != NULL) @@ -4039,7 +4053,7 @@ xmlnode *validate_data_root = xmlnode_from_str(webdata, -1); xmlnode *validate_data_child = xmlnode_get_child(validate_data_root, "mobile_no"); mobile_no = (char *)xmlnode_get_attrib(validate_data_child, "msisdn"); - + validate_data_root = xmlnode_copy(validate_data_child); validate_data_child = xmlnode_get_child(validate_data_root, "status"); status = xmlnode_get_data(validate_data_child); @@ -4142,7 +4156,7 @@ struct yahoo_p2p_data *p2p_data; gboolean msn = FALSE; msg2 = yahoo_string_encode(gc, msg, &utf8); - + if(msg2) { lenb = strlen(msg2); lenc = g_utf8_strlen(msg2, -1); @@ -4176,7 +4190,7 @@ sms_cb_data->what = g_strdup(what); purple_conversation_write(conv, NULL, "Getting mobile carrier to send the sms", PURPLE_MESSAGE_SYSTEM, time(NULL)); - + yahoo_get_sms_carrier(gc, sms_cb_data); g_free(msg); @@ -4295,7 +4309,7 @@ if( (p2p_data = g_hash_table_lookup(yd->peers, who)) && !msn ) { yahoo_packet_hash(pkt, "sssssis", 49, "TYPING", 1, purple_connection_get_display_name(gc), 14, " ", 13, state == PURPLE_TYPING ? "1" : "0", - 5, who, 11, p2p_data->session_id, 1002, "1"); /* To-do: key 15 to be sent in case of p2p */ + 5, who, 11, p2p_data->session_id, 1002, "1"); /* To-do: key 15 to be sent in case of p2p */ yahoo_p2p_write_pkt(p2p_data->source, pkt); yahoo_packet_free(pkt); }
--- a/libpurple/protocols/yahoo/yahoo.h Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo.h Sat Jun 20 21:44:23 2009 +0000 @@ -53,7 +53,7 @@ #define YAHOOJP_XFER_HOST "filetransfer.msg.yahoo.co.jp" #define YAHOOJP_WEBCAM_HOST "wc.yahoo.co.jp" /* not sure, must test: */ -#define YAHOOJP_XFER_RELAY_HOST "relay.msg.yahoo.co.jp" +#define YAHOOJP_XFER_RELAY_HOST "relay.msg.yahoo.co.jp" #define YAHOOJP_XFER_RELAY_PORT 80 #define YAHOOJP_ROOMLIST_URL "http://insider.msg.yahoo.co.jp/ycontent/" #define YAHOOJP_ROOMLIST_LOCALE "ja" @@ -201,7 +201,7 @@ GSList *url_datas; GHashTable *xfer_peer_idstring_map;/* Hey, i dont know, but putting this HashTable next to friends gives a run time fault... */ GSList *cookies;/* contains all cookies, including _y and _t */ - + /** * We may receive a list15 in multiple packets with no prior warning as to how many we'll be getting; * the server expects us to keep track of the group for which it is sending us contact names.
--- a/libpurple/protocols/yahoo/yahoo_aliases.h Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo_aliases.h Sat Jun 20 21:44:23 2009 +0000 @@ -1,38 +1,38 @@ -/* - * purple - * - * Purple is the legal property of its developers, whose names are too numerous - * to list here. Please refer to the COPYRIGHT file distributed with this - * source distribution. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA - * - */ - - -#include "internal.h" - -#include "account.h" -#include "accountopt.h" -#include "blist.h" -#include "debug.h" -#include "util.h" -#include "version.h" -#include "yahoo.h" -#include "yahoo_packet.h" - -void yahoo_update_alias(PurpleConnection *gc, const char *who, const char *alias); -void yahoo_fetch_aliases(PurpleConnection *gc); - +/* + * purple + * + * Purple is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + * + */ + + +#include "internal.h" + +#include "account.h" +#include "accountopt.h" +#include "blist.h" +#include "debug.h" +#include "util.h" +#include "version.h" +#include "yahoo.h" +#include "yahoo_packet.h" + +void yahoo_update_alias(PurpleConnection *gc, const char *who, const char *alias); +void yahoo_fetch_aliases(PurpleConnection *gc); +
--- a/libpurple/protocols/yahoo/yahoo_filexfer.c Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo_filexfer.c Sat Jun 20 21:44:23 2009 +0000 @@ -320,7 +320,7 @@ if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND) { if (yd->jp) { - if (purple_proxy_connect(NULL, account, purple_account_get_string(account, "xferjp_host", YAHOOJP_XFER_HOST), + if (purple_proxy_connect(gc, account, purple_account_get_string(account, "xferjp_host", YAHOOJP_XFER_HOST), purple_account_get_int(account, "xfer_port", YAHOO_XFER_PORT), yahoo_sendfile_connected, xfer) == NULL) { @@ -329,7 +329,7 @@ purple_xfer_cancel_remote(xfer); } } else { - if (purple_proxy_connect(NULL, account, purple_account_get_string(account, "xfer_host", YAHOO_XFER_HOST), + if (purple_proxy_connect(gc, account, purple_account_get_string(account, "xfer_host", YAHOO_XFER_HOST), purple_account_get_int(account, "xfer_port", YAHOO_XFER_PORT), yahoo_sendfile_connected, xfer) == NULL) { @@ -340,7 +340,7 @@ } } else { xfer->fd = -1; - if (purple_proxy_connect(NULL, account, xfer_data->host, xfer_data->port, + if (purple_proxy_connect(gc, account, xfer_data->host, xfer_data->port, yahoo_receivefile_connected, xfer) == NULL) { purple_notify_error(gc, NULL, _("File Transfer Failed"), _("Unable to establish file descriptor.")); @@ -380,12 +380,12 @@ 28, xfer->size, 301, 268, 303, 268); - g_free(filename); + g_free(filename); } else { if(xfer_data->firstoflist == TRUE) { pkt = yahoo_packet_new(YAHOO_SERVICE_FILETRANS_15, YAHOO_STATUS_AVAILABLE, yd->session_id); - + yahoo_packet_hash(pkt, "sssi", 1, purple_normalize(account, purple_account_get_username(account)), 5, xfer->who, @@ -394,7 +394,7 @@ } else { pkt = yahoo_packet_new(YAHOO_SERVICE_FILETRANS_ACC_15, YAHOO_STATUS_AVAILABLE, yd->session_id); - + yahoo_packet_hash(pkt, "sssi", 1, purple_normalize(account, purple_account_get_username(account)), 5, xfer->who, @@ -623,7 +623,7 @@ else if (written <= 0) purple_debug_info("yahoo", "p2p filetransfer: Unable to write HTTP OK"); - /* close connection */ + /* close connection */ close(xfer->fd); xfer->fd = -1; g_free(tx); @@ -644,14 +644,14 @@ /* Send HTTP OK in case of p2p transfer, when we act as server */ if((xfer_data->xfer_url != NULL) && (xfer_old->fd >=0) && (purple_xfer_get_status(xfer_old) == PURPLE_XFER_STATUS_DONE)) yahoo_p2p_ft_server_send_OK(xfer_old); - + /* removing top of filename & size list completely */ g_free( xfer_data->filename_list->data ); g_free( xfer_data->size_list->data ); - + xfer_data->filename_list->data = NULL; xfer_data->size_list->data = NULL; - + xfer_data->filename_list = g_slist_delete_link(xfer_data->filename_list, xfer_data->filename_list); xfer_data->size_list = g_slist_delete_link(xfer_data->size_list, xfer_data->size_list); @@ -697,16 +697,16 @@ /* Build the file transfer handle. */ xfer = purple_xfer_new(gc->account, PURPLE_XFER_RECEIVE, xfer_old->who); - + if (xfer) { /* Set the info about the incoming file. */ char *utf8_filename = yahoo_string_decode(gc, filename, TRUE); purple_xfer_set_filename(xfer, utf8_filename); g_free(utf8_filename); purple_xfer_set_size(xfer, filesize); - + xfer->data = xfer_data; - + /* Setup our I/O op functions */ purple_xfer_set_init_fnc(xfer, yahoo_xfer_init_15); purple_xfer_set_start_fnc(xfer, yahoo_xfer_start); @@ -1003,7 +1003,7 @@ purple_xfer_cancel_remote(xfer); return; } - + /* Discard the length... */ hosts = g_slist_remove(hosts, hosts->data); if(!hosts) @@ -1012,7 +1012,7 @@ purple_xfer_cancel_remote(xfer); return; } - + /* TODO:actually, u must try with addr no.1 , if its not working addr no.2 ..... */ addr = hosts->data; actaddr = addr->sin_addr.s_addr; @@ -1113,14 +1113,15 @@ while((did = read(source, buf, 998)) > 0) { xd->txbuflen += did; - buf[did] = '\0'; + buf[did] = '\0'; t = xd->txbuf; xd->txbuf = g_strconcat(t,buf,NULL); g_free(t); } g_free(buf); - if (did < 0 && errno == EAGAIN) return; + if (did < 0 && errno == EAGAIN) + return; else if (did < 0) { purple_debug_error("yahoo", "Unable to write in order to start ft errno = %d\n", errno); purple_xfer_cancel_remote(xfer); @@ -1136,7 +1137,7 @@ close(source);/* Is this required? */ g_free(xd->txbuf); xd->txbuf = NULL; - if (purple_proxy_connect(NULL, account, xd->host, xd->port, yahoo_xfer_connected_15, xfer) == NULL) + if (purple_proxy_connect(gc, account, xd->host, xd->port, yahoo_xfer_connected_15, xfer) == NULL) { purple_notify_error(gc, NULL, _("File Transfer Failed"), _("Unable to establish file descriptor.")); @@ -1276,7 +1277,7 @@ } } else if(purple_xfer_get_type(xfer) == PURPLE_XFER_RECEIVE && xd->status_15 == STARTED) - { + { if(xd->info_val_249 == 1) { /* receiving file via p2p, connected as client */ @@ -1592,7 +1593,7 @@ GSList *filename_list = NULL; GSList *size_list = NULL; int nooffiles = 0; - + yd = gc->proto_data; for (l = pkt->hash; l; l = l->next) { @@ -1617,7 +1618,7 @@ break; case 222: val_222 = atol(pair->value); - /* 1=send, 2=cancel, 3=accept, 4=reject */ + /* 1=send, 2=cancel, 3=accept, 4=reject */ break; /* check for p2p and imviron .... not sure it comes by this service packet. Since it was bundled with filexfer in old ymsg version, still keeping it. */ @@ -1655,7 +1656,7 @@ * so, purple dnsquery is used... but retries, trying with next ip * address etc. is not implemented..TODO */ - + /* To send through p2p */ if( g_hash_table_lookup(yd->peers, from) ) { /* send p2p file transfer information */ @@ -1685,7 +1686,7 @@ g_hash_table_replace(yd->imvironments, g_strdup(from), g_strdup(imv)); return; } - + if (pkt->service == YAHOO_SERVICE_P2PFILEXFER) { if (service && (strcmp("FILEXFER", service) != 0)) { purple_debug_misc("yahoo", "unhandled service 0x%02x\n", pkt->service); @@ -1710,7 +1711,7 @@ xfer_data->xfer_peer_idstring = g_strdup(xfer_peer_idstring); xfer_data->filename_list = filename_list; xfer_data->size_list = size_list; - + /* Build the file transfer handle. */ xfer = purple_xfer_new(gc->account, PURPLE_XFER_RECEIVE, from); xfer->message = NULL; @@ -1739,7 +1740,7 @@ g_hash_table_insert(yd->xfer_peer_idstring_map, xfer_data->xfer_peer_idstring, xfer); - + if(nooffiles > 1) { gchar* message; message = g_strdup_printf(_("%s is trying to send you a group of %d files.\n"), xfer->who, nooffiles); @@ -1825,7 +1826,7 @@ purple_xfer_cancel_remote(xfer); return; } - + account = purple_connection_get_account(xfer_data->gc); pkt_to_send = yahoo_packet_new(YAHOO_SERVICE_FILETRANS_ACC_15, @@ -1841,7 +1842,7 @@ yahoo_packet_send_and_free(pkt_to_send, yd); - if (purple_proxy_connect(NULL, account, xfer_data->host, xfer_data->port, + if (purple_proxy_connect(gc, account, xfer_data->host, xfer_data->port, yahoo_xfer_connected_15, xfer) == NULL) { purple_notify_error(gc, NULL, _("File Transfer Failed"), _("Unable to establish file descriptor.")); @@ -1916,12 +1917,12 @@ xfer_data = xfer->data; if(url) purple_url_parse(url, &(xfer_data->host), &(xfer_data->port), &(xfer_data->path), NULL, NULL); - + xfer_data->xfer_idstring_for_relay = g_strdup(xfer_idstring_for_relay); xfer_data->status_15 = ACCEPTED; account = purple_connection_get_account(gc); - if (purple_proxy_connect(NULL, account, xfer_data->host, xfer_data->port, + if (purple_proxy_connect(gc, account, xfer_data->host, xfer_data->port, yahoo_xfer_connected_15, xfer) == NULL) { purple_notify_error(gc, NULL, _("File Transfer Failed"),_("Unable to connect"));
--- a/libpurple/protocols/yahoo/yahoo_packet.c Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo_packet.c Sat Jun 20 21:44:23 2009 +0000 @@ -195,7 +195,7 @@ "Key: %d \tValue: %s\n", pair->key, esc); g_free(esc); } -#endif +#endif /* DEBUG */ } else { g_free(pair); } @@ -282,7 +282,7 @@ } purple_debug(PURPLE_DEBUG_MISC, NULL, "\n"); -#endif +#endif /* YAHOO_DEBUG */ } static void @@ -329,7 +329,7 @@ if (wm) pos += yahoo_put16(data + pos, YAHOO_WEBMESSENGER_PROTO_VER); else if (jp) - pos += yahoo_put16(data + pos, YAHOO_PROTO_VER_JAPAN); + pos += yahoo_put16(data + pos, YAHOO_PROTO_VER_JAPAN); else pos += yahoo_put16(data + pos, YAHOO_PROTO_VER); pos += yahoo_put16(data + pos, 0x0000);
--- a/libpurple/protocols/yahoo/yahoo_packet.h Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo_packet.h Sat Jun 20 21:44:23 2009 +0000 @@ -107,6 +107,7 @@ YAHOO_SERVICE_CHGRP_15 = 0xe7, YAHOO_SERVICE_STATUS_15 = 0xf0, YAHOO_SERVICE_LIST_15 = 0xf1, + YAHOO_SERVICE_MESSAGE_ACK = 0xfb, YAHOO_SERVICE_WEBLOGIN = 0x0226, YAHOO_SERVICE_SMS_MSG = 0x02ea /* YAHOO_SERVICE_DISCONNECT = 0x07d1 Server forces us to disconnect. Is sent with TCP FIN flag set */
--- a/libpurple/protocols/yahoo/yahoo_picture.c Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo_picture.c Sat Jun 20 21:44:23 2009 +0000 @@ -126,7 +126,7 @@ gboolean use_whole_url = yahoo_account_use_http_proxy(gc); /* FIXME: Cleanup this strtol() stuff if possible. */ - if (b && (locksum = purple_buddy_icons_get_checksum_for_user(b)) != NULL && + if (b && (locksum = purple_buddy_icons_get_checksum_for_user(b)) != NULL && (checksum == strtol(locksum, NULL, 10))) return; @@ -506,7 +506,7 @@ "Content-Length: %" G_GSIZE_FORMAT "\r\n" "Cache-Control: no-cache\r\n\r\n", use_whole_url ? "http://" : "", use_whole_url ? tmp : "", - yd->cookie_t, yd->cookie_y, + yd->cookie_t, yd->cookie_y, tmp, pkt_buf_len + 4 + d->str->len); g_free(tmp); @@ -573,7 +573,7 @@ purple_debug_misc("yahoo", "Calculated buddy icon checksum: %d\n", checksum); return checksum; -} +} void yahoo_set_buddy_icon(PurpleConnection *gc, PurpleStoredImage *img) {
--- a/libpurple/protocols/yahoo/yahoo_profile.c Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo_profile.c Sat Jun 20 21:44:23 2009 +0000 @@ -29,7 +29,7 @@ #include "util.h" #if PHOTO_SUPPORT #include "imgstore.h" -#endif +#endif /* PHOTO_SUPPORT */ #include "yahoo.h" #include "yahoo_friend.h" @@ -40,11 +40,11 @@ } YahooGetInfoData; typedef enum profile_lang_id { - XX, DA, DE, EL, - EN, EN_GB, + XX, DA, DE, EL, + EN, EN_GB, ES_AR, ES_ES, ES_MX, ES_US, - FR_CA, FR_FR, - IT, JA, KO, NO, PT, SV, + FR_CA, FR_FR, + IT, JA, KO, NO, PT, SV, ZH_CN, ZH_HK, ZH_TW, ZH_US, PT_BR } profile_lang_id_t; @@ -702,7 +702,7 @@ const char *balias = purple_buddy_get_local_buddy_alias(b); if(balias && balias[0]) { char *aliastext = g_markup_escape_text(balias, -1); - purple_notify_user_info_add_pair(user_info, _("Alias"), aliastext); + purple_notify_user_info_add_pair(user_info, _("Alias"), aliastext); g_free(aliastext); } #if 0 @@ -777,7 +777,7 @@ char *stripped; int stripped_len; char *last_updated_utf8_string = NULL; -#endif +#endif /* !PHOTO_SUPPORT */ const char *last_updated_string = NULL; char *url_buffer; GString *s; @@ -899,7 +899,7 @@ #if PHOTO_SUPPORT photo_url_text = yahoo_get_photo_url(url_text, info_data->name); -#endif +#endif /* PHOTO_SUPPORT */ url_buffer = g_strdup(url_text); @@ -1048,7 +1048,7 @@ purple_debug_info("yahoo", "%s is %" G_GSIZE_FORMAT " bytes\n", photo_url_text, len); id = purple_imgstore_add_with_id(g_memdup(url_text, len), len, NULL); - + tmp = g_strdup_printf("<img id=\"%d\"><br>", id); purple_notify_user_info_add_pair(user_info, NULL, tmp); g_free(tmp); @@ -1259,7 +1259,7 @@ g_free(info2_data); if (id != -1) purple_imgstore_unref_by_id(id); -#endif +#endif /* PHOTO_SUPPORT */ } void yahoo_get_info(PurpleConnection *gc, const char *name)
--- a/libpurple/protocols/yahoo/yahoochat.c Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoochat.c Sat Jun 20 21:44:23 2009 +0000 @@ -30,7 +30,7 @@ #ifdef HAVE_CONFIG_H #include "config.h" -#endif +#endif /* HAVE_CONFIG_H */ #include "debug.h" #include "privacy.h" @@ -1519,7 +1519,7 @@ purple_roomlist_set_fields(rl, fields); - if (purple_proxy_connect(NULL, account, yrl->host, 80, + if (purple_proxy_connect(gc, account, yrl->host, 80, yahoo_roomlist_got_connected, yrl) == NULL) { purple_notify_error(gc, NULL, _("Connection problem"), _("Unable to fetch room list.")); @@ -1588,8 +1588,9 @@ yrl->ucat = purple_roomlist_room_new(PURPLE_ROOMLIST_ROOMTYPE_CATEGORY, _("User Rooms"), yrl->cat); purple_roomlist_room_add(list, yrl->ucat); - if (purple_proxy_connect(NULL, list->account, yrl->host, 80, - yahoo_roomlist_got_connected, yrl) == NULL) + if (purple_proxy_connect(purple_account_get_connection(list->account), + list->account, yrl->host, 80, + yahoo_roomlist_got_connected, yrl) == NULL) { purple_notify_error(purple_account_get_connection(list->account), NULL, _("Connection problem"), _("Unable to fetch room list."));
--- a/libpurple/protocols/yahoo/ycht.c Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/protocols/yahoo/ycht.c Sat Jun 20 21:44:23 2009 +0000 @@ -225,7 +225,7 @@ } purple_debug(PURPLE_DEBUG_MISC, NULL, "\n"); -#endif +#endif /* YAHOO_YCHT_DEBUG */ } static YchtPkt *ycht_packet_new(guint version, guint service, int status) @@ -578,7 +578,7 @@ yd->ycht = ycht; - if (purple_proxy_connect(NULL, account, + if (purple_proxy_connect(gc, account, purple_account_get_string(account, "ycht-server", YAHOO_YCHT_HOST), purple_account_get_int(account, "ycht-port", YAHOO_YCHT_PORT), ycht_got_connected, ycht) == NULL)
--- a/libpurple/util.c Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/util.c Sat Jun 20 21:44:23 2009 +0000 @@ -3898,7 +3898,7 @@ url_fetch_recv_cb(data, -1, cond); } -/* +/** * This function is called when the socket is available to be written * to. *
--- a/libpurple/xmlnode.c Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/xmlnode.c Sat Jun 20 21:44:23 2009 +0000 @@ -382,7 +382,7 @@ } char * -xmlnode_get_data(xmlnode *node) +xmlnode_get_data(const xmlnode *node) { GString *str = NULL; xmlnode *c; @@ -405,7 +405,7 @@ } char * -xmlnode_get_data_unescaped(xmlnode *node) +xmlnode_get_data_unescaped(const xmlnode *node) { char *escaped = xmlnode_get_data(node);
--- a/libpurple/xmlnode.h Tue Jun 16 16:44:51 2009 +0000 +++ b/libpurple/xmlnode.h Sat Jun 20 21:44:23 2009 +0000 @@ -136,7 +136,7 @@ * @return The data from the node or NULL. This data is in raw escaped format. * You must g_free this string when finished using it. */ -char *xmlnode_get_data(xmlnode *node); +char *xmlnode_get_data(const xmlnode *node); /** * Gets unescaped data from a node. @@ -146,7 +146,7 @@ * @return The data from the node, in unescaped form. You must g_free * this string when finished using it. */ -char *xmlnode_get_data_unescaped(xmlnode *node); +char *xmlnode_get_data_unescaped(const xmlnode *node); /** * Sets an attribute for a node.