changeset 27706:c90de665e042

merge of '51da76f83bc049dc92e4199b15f634d001a5fa02' and '80e8cabf693147bcebc8857d383b6aab279d75ae'
author Paul Aurich <paul@darkrain42.org>
date Sun, 19 Jul 2009 19:38:35 +0000
parents 5d75276a575f (diff) 3edd01d04004 (current diff)
children 6dd89408ded4
files
diffstat 7 files changed, 113 insertions(+), 65 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sun Jul 19 19:33:43 2009 +0000
+++ b/ChangeLog	Sun Jul 19 19:38:35 2009 +0000
@@ -30,17 +30,11 @@
 	  useful when running libpurple inside of Valgrind or similar programs.
 	  Currently, it keeps plugins in memory, allowing Valgrind to perform
 	  symbol resolution of leak traces at shutdown.
-	* Add support for receiving handwritten (ink) messages on MSN.
 	* Don't do IPv6 address lookups if the computer does not have an IPv6
 	  address configured.
-	* Add support for receiving audio clips on MSN.
 	* Fix a leak when the UI provides its own DNS resolving UI op.
 	  (Aman Gupta)
 	* Don't fork a DNS resolver process to resolve IP addresses.  (Aman Gupta)
-	* Show the invite message for buddies that requested authorization
-	  from you on MSN.
-	* Support sending an invite message to buddies when requesting authorization
-	  from them on MSN.
 	* Better handling of corrupt certificates in the TLS Peers cache.
 	* More efficient purple_find_buddies() and purple_find_group() functions.
 	  (Jan Kaluza and Aman Gupta)
@@ -129,6 +123,15 @@
 	* Ability to set personal details for an account and for buddies in the
 	  buddylist.
 
+	MSN:
+	* Add support for receiving handwritten (ink) messages on MSN.
+	* Add support for receiving audio clips on MSN.
+	* Show the invite message for buddies that requested authorization
+	  from you on MSN.
+	* Support sending an invite message to buddies when requesting authorization
+	  from them on MSN.
+	* Timeout switchboard connections aggressively
+
 	Pidgin:
 	* Added -f command line option to tell Pidgin to ignore NetworkManager
 	  and assume it has a valid network connection.
--- a/finch/gntmedia.c	Sun Jul 19 19:33:43 2009 +0000
+++ b/finch/gntmedia.c	Sun Jul 19 19:38:35 2009 +0000
@@ -25,7 +25,7 @@
  */
 
 #include "finch.h"
-
+#include <internal.h>
 #include "gntconv.h"
 #include "gntmedia.h"
 
--- a/libpurple/protocols/msn/servconn.c	Sun Jul 19 19:33:43 2009 +0000
+++ b/libpurple/protocols/msn/servconn.c	Sun Jul 19 19:38:35 2009 +0000
@@ -26,6 +26,7 @@
 #include "error.h"
 
 static void read_cb(gpointer data, gint source, PurpleInputCondition cond);
+static void servconn_timeout_renew(MsnServConn *servconn);
 
 /**************************************************************************
  * Main
@@ -52,6 +53,8 @@
 
 	servconn->tx_buf = purple_circ_buffer_new(MSN_BUF_LEN);
 	servconn->tx_handler = 0;
+	servconn->timeout_sec = 0;
+	servconn->timeout_handle = 0;
 
 	servconn->fd = -1;
 
@@ -82,6 +85,8 @@
 	purple_circ_buffer_destroy(servconn->tx_buf);
 	if (servconn->tx_handler > 0)
 		purple_input_remove(servconn->tx_handler);
+	if (servconn->timeout_handle > 0)
+		purple_input_remove(servconn->timeout_handle);
 
 	msn_cmdproc_destroy(servconn->cmdproc);
 	g_free(servconn);
@@ -184,6 +189,7 @@
 		servconn->connect_cb(servconn);
 		servconn->inpa = purple_input_add(servconn->fd, PURPLE_INPUT_READ,
 			read_cb, data);
+		servconn_timeout_renew(servconn);
 	}
 	else
 	{
@@ -219,6 +225,7 @@
 
 		servconn->connected = TRUE;
 		servconn->httpconn->virgin = TRUE;
+		servconn_timeout_renew(servconn);
 
 		/* Someone wants to know we connected. */
 		servconn->connect_cb(servconn);
@@ -267,6 +274,12 @@
 		servconn->inpa = 0;
 	}
 
+	if (servconn->timeout_handle > 0)
+	{
+		purple_input_remove(servconn->timeout_handle);
+		servconn->timeout_handle = 0;
+	}
+
 	close(servconn->fd);
 
 	servconn->rx_buf = NULL;
@@ -279,6 +292,36 @@
 		servconn->disconnect_cb(servconn);
 }
 
+static gboolean
+servconn_idle_timeout_cb(MsnServConn *servconn)
+{
+	msn_servconn_disconnect(servconn);
+	servconn->timeout_handle = 0;
+	return FALSE;
+}
+
+static void
+servconn_timeout_renew(MsnServConn *servconn)
+{
+	if (servconn->timeout_handle) {
+		purple_input_remove(servconn->timeout_handle);
+		servconn->timeout_handle = 0;
+	}
+
+	if (servconn->connected && servconn->timeout_sec) {
+		servconn->timeout_handle = purple_timeout_add_seconds(
+			servconn->timeout_sec, servconn_idle_timeout_cb, servconn);
+	}
+}
+
+void
+msn_servconn_set_idle_timeout(MsnServConn *servconn, guint seconds)
+{
+	servconn->timeout_sec = seconds;
+	if (servconn->connected)
+		servconn_timeout_renew(servconn);
+}
+
 static void
 servconn_write_cb(gpointer data, gint source, PurpleInputCondition cond)
 {
@@ -304,6 +347,7 @@
 	}
 
 	purple_circ_buffer_mark_read(servconn->tx_buf, ret);
+	servconn_timeout_renew(servconn);
 }
 
 gssize
@@ -358,6 +402,7 @@
 		msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_WRITE);
 	}
 
+	servconn_timeout_renew(servconn);
 	return ret;
 }
 
@@ -392,6 +437,7 @@
 	servconn->rx_len += len;
 
 	msn_servconn_process_data(servconn);
+	servconn_timeout_renew(servconn);
 }
 
 void msn_servconn_process_data(MsnServConn *servconn)
--- a/libpurple/protocols/msn/servconn.h	Sun Jul 19 19:33:43 2009 +0000
+++ b/libpurple/protocols/msn/servconn.h	Sun Jul 19 19:38:35 2009 +0000
@@ -88,6 +88,8 @@
 
 	PurpleCircBuffer *tx_buf;
 	guint tx_handler;
+	guint timeout_sec;
+	guint timeout_handle;
 
 	void (*connect_cb)(MsnServConn *); /**< The callback to call when connecting. */
 	void (*disconnect_cb)(MsnServConn *); /**< The callback to call when disconnecting. */
@@ -178,4 +180,12 @@
  */
 void msn_servconn_process_data(MsnServConn *servconn);
 
+/**
+ * Set a idle timeout fot this servconn
+ *
+ * @param servconn The servconn
+ * @param seconds The idle timeout in seconds
+ */
+void msn_servconn_set_idle_timeout(MsnServConn *servconn, guint seconds);
+
 #endif /* _MSN_SERVCONN_H_ */
--- a/libpurple/protocols/msn/switchboard.c	Sun Jul 19 19:33:43 2009 +0000
+++ b/libpurple/protocols/msn/switchboard.c	Sun Jul 19 19:38:35 2009 +0000
@@ -42,15 +42,15 @@
 msn_switchboard_new(MsnSession *session)
 {
 	MsnSwitchBoard *swboard;
-	MsnServConn *servconn;
 
 	g_return_val_if_fail(session != NULL, NULL);
 
 	swboard = g_new0(MsnSwitchBoard, 1);
 
 	swboard->session = session;
-	swboard->servconn = servconn = msn_servconn_new(session, MSN_SERVCONN_SB);
-	swboard->cmdproc = servconn->cmdproc;
+	swboard->servconn = msn_servconn_new(session, MSN_SERVCONN_SB);
+	msn_servconn_set_idle_timeout(swboard->servconn, 60);
+	swboard->cmdproc = swboard->servconn->cmdproc;
 
 	swboard->msg_queue = g_queue_new();
 	swboard->empty = TRUE;
--- a/pidgin/gtkblist.c	Sun Jul 19 19:33:43 2009 +0000
+++ b/pidgin/gtkblist.c	Sun Jul 19 19:38:35 2009 +0000
@@ -1168,6 +1168,8 @@
 		_("Room _List"), 1,
 		GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
 		PIDGIN_STOCK_CHAT, GTK_RESPONSE_OK, NULL);
+	gtk_dialog_set_default_response(GTK_DIALOG(data->rq_data.window),
+		GTK_RESPONSE_OK);
 	data->default_chat_name = NULL;
 	data->rq_data.account = pidgin_account_option_menu_get_selected(data->rq_data.account_menu);
 
@@ -6925,6 +6927,8 @@
 			GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
 			GTK_STOCK_ADD, GTK_RESPONSE_OK,
 			NULL);
+	gtk_dialog_set_default_response(GTK_DIALOG(data->rq_data.window),
+			GTK_RESPONSE_OK);
 
 	g_signal_connect(G_OBJECT(data->rq_data.window), "destroy",
 	                 G_CALLBACK(destroy_add_buddy_dialog_cb), data);
@@ -7094,6 +7098,8 @@
 		GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
 		GTK_STOCK_ADD, GTK_RESPONSE_OK,
 		NULL);
+	gtk_dialog_set_default_response(GTK_DIALOG(data->chat_data.rq_data.window),
+			GTK_RESPONSE_OK);
 
 	data->chat_data.default_chat_name = g_strdup(name);
 
--- a/po/de.po	Sun Jul 19 19:33:43 2009 +0000
+++ b/po/de.po	Sun Jul 19 19:38:35 2009 +0000
@@ -11,8 +11,8 @@
 msgstr ""
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-07-19 14:03+0200\n"
-"PO-Revision-Date: 2009-07-19 14:03+0200\n"
+"POT-Creation-Date: 2009-07-19 19:25+0200\n"
+"PO-Revision-Date: 2009-07-19 19:25+0200\n"
 "Last-Translator: Jochen Kemnade <jochenkemnade@web.de>\n"
 "Language-Team: Deutsch <de@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -4066,16 +4066,14 @@
 msgid "Find Rooms"
 msgstr "Finde Räume"
 
-#, fuzzy
 msgid "Affiliations:"
-msgstr "Alias:"
+msgstr "Mitgliedschaften:"
 
 msgid "No users found"
 msgstr "Keine Benutzer gefunden"
 
-#, fuzzy
 msgid "Roles:"
-msgstr "Funktion"
+msgstr "Rollen:"
 
 msgid "Ping timed out"
 msgstr "Ping-Zeitüberschreitung"
@@ -4084,6 +4082,8 @@
 "Unable to find alternative XMPP connection methods after failing to connect "
 "directly."
 msgstr ""
+"Nach dem Fehlschlagen einer direkten XMPP-Verbindung konnen keine "
+"alternativen Verbindungsmethoden gefunden werden."
 
 msgid "Invalid XMPP ID"
 msgstr "Ungültige XMPP-ID"
@@ -4529,21 +4529,21 @@
 msgid "ban &lt;user&gt; [reason]:  Ban a user from the room."
 msgstr "ban &lt;Benutzer&gt; [Grund]:  Verbanne einen Benutzer aus dem Raum."
 
-#, fuzzy
 msgid ""
 "affiliate &lt;owner|admin|member|outcast|none&gt; [nick1] [nick2] ...: Get "
 "the users with an affiliation or set users' affiliation with the room."
 msgstr ""
-"affiliate &lt;Benutzer&gt; &lt;owner|admin|member|outcast|none&gt;: Setze "
-"eine Benutzerzugehörigkeit für den Raum."
-
-#, fuzzy
+"affiliate &lt;owner|admin|member|outcast|none&gt; [Benutzer1] "
+"[Benutzer2] ...: Benutzer mit einer Mitgliedschaft für den Raum erfragen "
+"oder setzen"
+
 msgid ""
 "role &lt;moderator|participant|visitor|none&gt; [nick1] [nick2] ...: Get the "
 "users with an role or set users' role with the room."
 msgstr ""
-"role &lt;Benutzer&gt; &lt;moderator|participant|visitor|none&gt;: Setze eine "
-"Rolle für den Benutzer im Raum."
+"role &lt;owner|admin|member|outcast|none&gt; [Benutzer1] [Benutzer2] ...: "
+"Benutzer mit einer Rolle für den Raum erfragen oder Benutzern eine Rolle "
+"zuweisen"
 
 msgid "invite &lt;user&gt; [message]:  Invite a user to the room."
 msgstr ""
@@ -4681,9 +4681,8 @@
 msgid "Kicked (%s)"
 msgstr "Hinausgeworfen (%s)"
 
-#, fuzzy
 msgid "An error occurred on the in-band bytestream transfer\n"
-msgstr "Beim Übertragen der Datei trat ein Fehler auf\n"
+msgstr "Bei der In-Band-Bytestrom-Übertragung trat ein Fehler auf\n"
 
 msgid "Transfer was closed."
 msgstr "Übertragung wurde geschlossen."
@@ -4692,7 +4691,7 @@
 msgstr "Öffnen der Datei fehlgeschlagen"
 
 msgid "Failed to open in-band bytestream"
-msgstr ""
+msgstr "Öffnen des In-Band-Bytestroms fehlgeschlagen"
 
 #, c-format
 msgid "Unable to send file to %s, user does not support file transfers"
@@ -10806,73 +10805,63 @@
 msgstr "Das Layout von Icons, Namen und Status der Kontaktliste"
 
 #. Group
-#, fuzzy
 msgid "Expanded Background Color"
-msgstr "Hintergrundfarbe"
+msgstr "Hintergrundfarbe (ausgeklappt)"
 
 msgid "The background color of an expanded group"
 msgstr "Die Hintergrundfarbe für eine ausgeklappte Gruppe"
 
-#, fuzzy
 msgid "Expanded Text"
-msgstr "A_usklappen"
+msgstr "Text (ausgeklappt)"
 
 msgid "The text information for when a group is expanded"
 msgstr "Die Textinformation für eine ausgeklappte Gruppe"
 
-#, fuzzy
 msgid "Collapsed Background Color"
-msgstr "Hintergrundfarbe auswählen"
+msgstr "Hintergrundfarbe (zusammengeklappt)"
 
 msgid "The background color of a collapsed group"
 msgstr "Die Hintergrundfarbe für eine zusammengeklappte Gruppe"
 
-#, fuzzy
 msgid "Collapsed Text"
-msgstr "_Zusammenklappen"
+msgstr "Text (zusammengeklappt)"
 
 msgid "The text information for when a group is collapsed"
 msgstr "Die Textinformation für eine zusammengeklappte Gruppe"
 
 #. Buddy
-#, fuzzy
 msgid "Contact/Chat Background Color"
-msgstr "Hintergrundfarbe auswählen"
+msgstr "Hintergrundfarbe für Kontakt/Chat"
 
 msgid "The background color of a contact or chat"
 msgstr "Die Hintergrundfarbe für einen Kontakt oder Chat"
 
-#, fuzzy
 msgid "Contact Text"
-msgstr "Verknüpfter Text"
+msgstr "Text für Kontakt"
 
 msgid "The text information for when a contact is expanded"
 msgstr "Die Textinformation für einen ausgeklappten Kontakt"
 
-#, fuzzy
 msgid "On-line Text"
-msgstr "Online"
+msgstr "Online-Text"
 
 msgid "The text information for when a buddy is online"
 msgstr "Die Textinformation für einen Online-Buddy"
 
-#, fuzzy
 msgid "Away Text"
-msgstr "Abwesend"
+msgstr "Abwesenheitstext"
 
 msgid "The text information for when a buddy is away"
 msgstr "Die Textinformation für einen abwesenden Buddy"
 
-#, fuzzy
 msgid "Off-line Text"
-msgstr "Offline"
+msgstr "Offline-Text"
 
 msgid "The text information for when a buddy is off-line"
 msgstr "Die Textinformation für einen Offline-Buddy"
 
-#, fuzzy
 msgid "Idle Text"
-msgstr "Stimmungstext"
+msgstr "Untätigkeitstext"
 
 msgid "The text information for when a buddy is idle"
 msgstr "Die Textinformation für einen untätigen Buddy"
@@ -10946,7 +10935,6 @@
 msgid "Get Away Message"
 msgstr "Neue Abwesenheitsnachricht abholen"
 
-#, fuzzy
 msgid "Last Said"
 msgstr "Zuletzt gesagt"
 
@@ -12506,9 +12494,8 @@
 msgid "On unread messages"
 msgstr "Bei ungelesenen Nachrichten"
 
-#, fuzzy
 msgid "Conversation Window"
-msgstr "IM Gesprächsfenster"
+msgstr "Gesprächsfenster"
 
 msgid "_Hide new IM conversations:"
 msgstr "_Neue IM-Gespräche verstecken:"
@@ -13297,9 +13284,8 @@
 msgid "Service Discovery"
 msgstr "Dienstsuche"
 
-#, fuzzy
 msgid "_Browse"
-msgstr "_Browser:"
+msgstr "_Suchen"
 
 msgid "Server does not exist"
 msgstr "Server existiert nicht"
@@ -13311,7 +13297,7 @@
 msgstr "XMPP-Dienstsuche"
 
 msgid "Allows browsing and registering services."
-msgstr ""
+msgstr "Erlaubt das Durchsuchen und Registrieren von Diensten"
 
 #, fuzzy
 msgid ""
@@ -14042,24 +14028,23 @@
 "Icon for Contact/\n"
 "Icon for Unknown person"
 msgstr ""
-
-#, fuzzy
+"Icon für Kontakt/\n"
+"Icon for unbekannte Person"
+
 msgid "Icon for Chat"
-msgstr "Chat betreten"
+msgstr "Icon für Chat"
 
 msgid "Ignored"
 msgstr "Ignoriert"
 
-#, fuzzy
 msgid "Founder"
-msgstr "Lauter"
-
-#, fuzzy
+msgstr "Gründer"
+
 msgid "Operator"
-msgstr "Opera"
+msgstr "Operator"
 
 msgid "Half Operator"
-msgstr ""
+msgstr "Half-Operator"
 
 msgid "Authorization dialog"
 msgstr "Autorisierungsdialog"
@@ -14073,9 +14058,8 @@
 msgid "Mail dialog"
 msgstr "Mail-Dialog"
 
-#, fuzzy
 msgid "Question dialog"
-msgstr "Anfrage-Dialog"
+msgstr "Frage-Dialog"
 
 msgid "Warning dialog"
 msgstr "Warnungdialog"
@@ -14086,9 +14070,8 @@
 msgid "Status Icons"
 msgstr "Status-Icons"
 
-#, fuzzy
 msgid "Chatroom Emblems"
-msgstr "Chatraum-Gebiet"
+msgstr "Chatraum-Embleme"
 
 msgid "Dialog Icons"
 msgstr "Dialog-Icons"