# HG changeset patch # User Sadrul Habib Chowdhury # Date 1180810040 0 # Node ID fc2bb1b42868011ededabc2a32e14fee08ec3792 # Parent 70fb7663a918e1e3b54c30955d37fae7ac02a0c6# Parent 02abb6713cf247b64f8de24f4c76618aefe36b0e merge of '0d2fefb7e8f238c6b27bd7329aa0b3807c46c100' and 'e09ee811b1f5e76aa711285a2b635effbf64897f' diff -r 70fb7663a918 -r fc2bb1b42868 libpurple/protocols/Makefile.am --- a/libpurple/protocols/Makefile.am Sat Jun 02 14:41:13 2007 +0000 +++ b/libpurple/protocols/Makefile.am Sat Jun 02 18:47:20 2007 +0000 @@ -1,4 +1,4 @@ -EXTRA_DIST = Makefile.mingw null/ +EXTRA_DIST = Makefile.mingw DIST_SUBDIRS = bonjour gg irc jabber msn novell null oscar qq sametime silc toc simple yahoo zephyr diff -r 70fb7663a918 -r fc2bb1b42868 libpurple/protocols/msn/msn.c --- a/libpurple/protocols/msn/msn.c Sat Jun 02 14:41:13 2007 +0000 +++ b/libpurple/protocols/msn/msn.c Sat Jun 02 18:47:20 2007 +0000 @@ -1423,6 +1423,22 @@ if (found) \ sect_info = TRUE; +#define MSN_GOT_INFO_GET_FIELD_NO_SEARCH(a, b) \ + found = purple_markup_extract_info_field(stripped, stripped_len, user_info, \ + "\n" a ":", 0, "\n", 0, "Undisclosed", b, 0, NULL, msn_info_strip_search_link); \ + if (found) \ + sect_info = TRUE; + +static char * +msn_info_strip_search_link(const char *field, size_t len) +{ + const char *c; + if ((c = strstr(field, " (http://spaces.live.com/default.aspx?page=searchresults")) == NULL && + (c = strstr(field, " (http://spaces.msn.com/default.aspx?page=searchresults")) == NULL) + return g_strndup(field, len); + return g_strndup(field, c - field); +} + static void msn_got_info(PurpleUtilFetchUrlData *url_data, gpointer data, const gchar *url_text, size_t len, const gchar *error_message) @@ -1538,10 +1554,10 @@ /* General */ MSN_GOT_INFO_GET_FIELD("Nickname", _("Nickname")); - MSN_GOT_INFO_GET_FIELD("Age", _("Age")); - MSN_GOT_INFO_GET_FIELD("Gender", _("Gender")); - MSN_GOT_INFO_GET_FIELD("Occupation", _("Occupation")); - MSN_GOT_INFO_GET_FIELD("Location", _("Location")); + MSN_GOT_INFO_GET_FIELD_NO_SEARCH("Age", _("Age")); + MSN_GOT_INFO_GET_FIELD_NO_SEARCH("Gender", _("Gender")); + MSN_GOT_INFO_GET_FIELD_NO_SEARCH("Occupation", _("Occupation")); + MSN_GOT_INFO_GET_FIELD_NO_SEARCH("Location", _("Location")); /* Extract their Interests and put it in */ found = purple_markup_extract_info_field(stripped, stripped_len, user_info, @@ -1802,7 +1818,10 @@ /* This doesn't work with the new spaces profiles - Stu 3/2/06 char *p = strstr(url_buffer, "Unknown Member "); * This might not work for long either ... */ + /* Nope, it failed some time before 5/2/07 :( char *p = strstr(url_buffer, "form id=\"SpacesSearch\" name=\"SpacesSearch\""); + * Let's see how long this one holds out for ... */ + char *p = strstr(url_buffer, "
gc), info_data->name); purple_notify_user_info_add_pair(user_info, _("Error retrieving profile"), diff -r 70fb7663a918 -r fc2bb1b42868 libpurple/protocols/msn/msn.h --- a/libpurple/protocols/msn/msn.h Sat Jun 02 14:41:13 2007 +0000 +++ b/libpurple/protocols/msn/msn.h Sat Jun 02 18:47:20 2007 +0000 @@ -67,7 +67,7 @@ #define HOTMAIL_URL "http://www.hotmail.com/cgi-bin/folders" #define PASSPORT_URL "http://lc1.law13.hotmail.passport.com/cgi-bin/dologin?login=" -#define PROFILE_URL "http://spaces.msn.com/profile.aspx?mem=" +#define PROFILE_URL "http://spaces.live.com/profile.aspx?mem=" #define USEROPT_HOTMAIL 0 diff -r 70fb7663a918 -r fc2bb1b42868 libpurple/protocols/msn/nexus.c --- a/libpurple/protocols/msn/nexus.c Sat Jun 02 14:41:13 2007 +0000 +++ b/libpurple/protocols/msn/nexus.c Sat Jun 02 18:47:20 2007 +0000 @@ -247,6 +247,8 @@ temp = g_strndup(error, c - error); error = purple_url_decode(temp); g_free(temp); + if ((temp = strstr(error, " Do one of the following or try again:")) != NULL) + *temp = '\0'; } } diff -r 70fb7663a918 -r fc2bb1b42868 libpurple/protocols/msn/session.c --- a/libpurple/protocols/msn/session.c Sat Jun 02 14:41:13 2007 +0000 +++ b/libpurple/protocols/msn/session.c Sat Jun 02 18:47:20 2007 +0000 @@ -316,6 +316,7 @@ "temporarily.")); break; case MSN_ERROR_AUTH: + gc->wants_to_die = TRUE; msg = g_strdup_printf(_("Unable to authenticate: %s"), (info == NULL ) ? _("Unknown error") : info); diff -r 70fb7663a918 -r fc2bb1b42868 libpurple/protocols/msn/switchboard.c --- a/libpurple/protocols/msn/switchboard.c Sat Jun 02 14:41:13 2007 +0000 +++ b/libpurple/protocols/msn/switchboard.c Sat Jun 02 18:47:20 2007 +0000 @@ -419,7 +419,14 @@ case MSN_SB_ERROR_TOO_FAST: str_reason = _("Message could not be sent " "because we are sending too quickly:"); - break; + break; + case MSN_SB_ERROR_AUTHFAILED: + str_reason = _("Message could not be sent " + "because we wer unable to establish a " + "session with the server. This is " + "likely a server problem, try again in " + "a few minutes:"); + break; default: str_reason = _("Message could not be sent " "because an error with " @@ -963,9 +970,13 @@ * Connect stuff **************************************************************************/ static void +ans_usr_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error); + +static void connect_cb(MsnServConn *servconn) { MsnSwitchBoard *swboard; + MsnTransaction *trans; MsnCmdProc *cmdproc; PurpleAccount *account; @@ -980,16 +991,44 @@ { swboard->empty = FALSE; - msn_cmdproc_send(cmdproc, "ANS", "%s %s %s", - purple_account_get_username(account), - swboard->auth_key, swboard->session_id); + trans = msn_transaction_new(cmdproc, "ANS", "%s %s %s", + purple_account_get_username(account), + swboard->auth_key, swboard->session_id); } else { - msn_cmdproc_send(cmdproc, "USR", "%s %s", - purple_account_get_username(account), - swboard->auth_key); + trans = msn_transaction_new(cmdproc, "USR", "%s %s", + purple_account_get_username(account), + swboard->auth_key); } + + msn_transaction_set_error_cb(trans, ans_usr_error); + msn_transaction_set_data(trans, swboard); + msn_cmdproc_send_trans(cmdproc, trans); +} + +static void +ans_usr_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error) +{ + MsnSwitchBoard *swboard; + char **params; + char *passport; + int reason = MSN_SB_ERROR_UNKNOWN; + + if (error == 911) + { + reason = MSN_SB_ERROR_AUTHFAILED; + } + + purple_debug_warning("msn", "ans_usr_error: command %s gave error %i\n", trans->command, error); + + params = g_strsplit(trans->params, " ", 0); + passport = params[0]; + swboard = trans->data; + + swboard_error_helper(swboard, reason, passport); + + g_strfreev(params); } static void diff -r 70fb7663a918 -r fc2bb1b42868 libpurple/protocols/msn/switchboard.h --- a/libpurple/protocols/msn/switchboard.h Sat Jun 02 14:41:13 2007 +0000 +++ b/libpurple/protocols/msn/switchboard.h Sat Jun 02 18:47:20 2007 +0000 @@ -46,6 +46,7 @@ MSN_SB_ERROR_USER_OFFLINE, /**< The user to call is offline. */ MSN_SB_ERROR_CONNECTION, /**< There was a connection error. */ MSN_SB_ERROR_TOO_FAST, /**< We are sending too fast */ + MSN_SB_ERROR_AUTHFAILED, /**< Authentication failed joining the switchboard session */ MSN_SB_ERROR_UNKNOWN /**< An unknown error occurred. */ } MsnSBErrorType; diff -r 70fb7663a918 -r fc2bb1b42868 libpurple/protocols/null/nullprpl.c --- a/libpurple/protocols/null/nullprpl.c Sat Jun 02 14:41:13 2007 +0000 +++ b/libpurple/protocols/null/nullprpl.c Sat Jun 02 18:47:20 2007 +0000 @@ -432,7 +432,7 @@ from_username, who, message); /* is the sender blocked by the recipient's privacy settings? */ - if (!purple_privacy_check(to_acct, gc->account->username)) { + if (to_acct && !purple_privacy_check(to_acct, gc->account->username)) { char *msg = g_strdup_printf( _("Your message was blocked by %s's privacy settings."), who); purple_debug_info("nullprpl", diff -r 70fb7663a918 -r fc2bb1b42868 pidgin/plugins/xmppconsole.c --- a/pidgin/plugins/xmppconsole.c Sat Jun 02 14:41:13 2007 +0000 +++ b/pidgin/plugins/xmppconsole.c Sat Jun 02 18:47:20 2007 +0000 @@ -183,16 +183,17 @@ char *text; gc = console->gc; - - prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl); - + + if (gc) + prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl); + buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(console->entry)); gtk_text_buffer_get_start_iter(buffer, &start); gtk_text_buffer_get_end_iter(buffer, &end); - + text = gtk_imhtml_get_text(GTK_IMHTML(console->entry), &start, &end); - - if (gc && prpl_info->convo_closed != NULL) + + if (prpl_info && prpl_info->send_raw != NULL) prpl_info->send_raw(gc, text, strlen(text)); g_free(text);