--- a/ChangeLog Fri Sep 28 16:32:28 2007 +0000
+++ b/ChangeLog Fri Sep 28 17:13:38 2007 +0000
@@ -1,5 +1,26 @@
Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
+ http://developer.pidgin.im/query?status=closed&milestone=2.2.1 + NOTE: Due to the backporting that happened for the actual + release, it is possible bugs marked as fixed in 2.2.1 + will not be fixed until 2.2.2. + * A few build issues on Solaris were fixed. + * Cancelling the password prompt for an account will no longer leave + it in an ambiguous state. (It will be disabled.) + * Fixed an erroneous size display for MSN file transfers. (galt) + * Gmail notifications are better tracked + * Fixed keyboard tab reordering to move tabs one step instead of two. + * You should no longer lose proxy settings when Pidgin is restarted. + * Pressing 'Insert' in the buddylist will bring up the 'Add Buddy' Version 2.2.0 (09/13/2007):
http://developer.pidgin.im/query?status=closed&milestone=2.2.0
--- a/libpurple/plugins/ssl/ssl-gnutls.c Fri Sep 28 16:32:28 2007 +0000
+++ b/libpurple/plugins/ssl/ssl-gnutls.c Fri Sep 28 17:13:38 2007 +0000
@@ -111,7 +111,7 @@
PurpleSslGnutlsData *gnutls_data = PURPLE_SSL_GNUTLS_DATA(gsc);
- purple_debug_info("gnutls", "Handshaking with %s\n", gsc->host);
+ /*purple_debug_info("gnutls", "Handshaking with %s\n", gsc->host);*/ ret = gnutls_handshake(gnutls_data->session);
if(ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED)
@@ -271,6 +271,8 @@
gnutls_data->handshake_handler = purple_input_add(gsc->fd,
PURPLE_INPUT_READ, ssl_gnutls_handshake_cb, gsc);
+ purple_debug_info("gnutls", "Starting handshake with %s\n", gsc->host); /* Orborde asks: Why are we configuring a callback, then
@@ -434,9 +436,6 @@
/* If the refcount reaches zero, kill the structure */
- purple_debug_info("gnutls/x509",
- "Freeing unused cert data at %p\n",
/* Kill the internal data */
gnutls_x509_crt_deinit( cd->crt );
/* And kill the struct */
--- a/libpurple/protocols/yahoo/yahoo.c Fri Sep 28 16:32:28 2007 +0000
+++ b/libpurple/protocols/yahoo/yahoo.c Fri Sep 28 17:13:38 2007 +0000
@@ -860,10 +860,13 @@
/* If a Doodle session doesn't exist between this user */
wb = purple_whiteboard_create(gc->account, im->from, DOODLE_STATE_REQUESTED);
- yahoo_doodle_command_send_request(gc, im->from);
- yahoo_doodle_command_send_ready(gc, im->from);
+ ds->imv_key = g_strdup(imv); + yahoo_doodle_command_send_request(gc, im->from, imv); + yahoo_doodle_command_send_ready(gc, im->from, imv); --- a/libpurple/protocols/yahoo/yahoo_doodle.c Fri Sep 28 16:32:28 2007 +0000
+++ b/libpurple/protocols/yahoo/yahoo_doodle.c Fri Sep 28 17:13:38 2007 +0000
@@ -118,19 +118,19 @@
/* Insert this 'session' in the list. At this point, it's only a
- purple_whiteboard_create(account, to, DOODLE_STATE_REQUESTING);
+ wb = purple_whiteboard_create(account, to, DOODLE_STATE_REQUESTING); /* NOTE Perhaps some careful handling of remote assumed established
- yahoo_doodle_command_send_ready(gc, to);
- yahoo_doodle_command_send_request(gc, to);
+ yahoo_doodle_command_send_ready(gc, to, DOODLE_IMV_KEY); + yahoo_doodle_command_send_request(gc, to, DOODLE_IMV_KEY); -static void yahoo_doodle_command_got_request(PurpleConnection *gc, const char *from)
+static void yahoo_doodle_command_got_request(PurpleConnection *gc, const char *from, const char *imv_key) @@ -147,6 +147,7 @@
/* If a session with the remote user doesn't exist */
/* Ask user if they wish to accept the request for a doodle session */
/* TODO Ask local user to start Doodle session with remote user */
/* NOTE This if/else statement won't work right--must use dialog
@@ -160,9 +161,11 @@
dialog_message, NULL, NULL, NULL);
- purple_whiteboard_create(account, from, DOODLE_STATE_REQUESTED);
+ wb = purple_whiteboard_create(account, from, DOODLE_STATE_REQUESTED); + ds->imv_key = g_strdup(imv_key); - yahoo_doodle_command_send_ready(gc, from);
+ yahoo_doodle_command_send_ready(gc, from, imv_key); /* TODO Might be required to clear the canvas of an existing doodle
@@ -170,7 +173,7 @@
-static void yahoo_doodle_command_got_ready(PurpleConnection *gc, const char *from)
+static void yahoo_doodle_command_got_ready(PurpleConnection *gc, const char *from, const char *imv_key) @@ -189,11 +192,15 @@
if(wb->state == DOODLE_STATE_REQUESTING)
+ doodle_session *ds = wb->proto_data; purple_whiteboard_start(wb);
wb->state = DOODLE_STATE_ESTABLISHED;
- yahoo_doodle_command_send_confirm(gc, from);
+ yahoo_doodle_command_send_confirm(gc, from, imv_key); + /* Let's steal the imv_key and reuse it */ + ds->imv_key = g_strdup(imv_key); else if(wb->state == DOODLE_STATE_ESTABLISHED)
@@ -208,7 +215,7 @@
else if(wb->state == DOODLE_STATE_REQUESTED)
/* purple_whiteboard_start(wb); */
- yahoo_doodle_command_send_ready(gc, from);
+ yahoo_doodle_command_send_ready(gc, from, imv_key); @@ -296,14 +303,14 @@
-yahoo_doodle_command_got_extra(PurpleConnection *gc, const char *from, const char *message)
+yahoo_doodle_command_got_extra(PurpleConnection *gc, const char *from, const char *message, const char *imv_key) purple_debug_info("yahoo", "doodle: Got Extra (%s)\n", from);
/* I do not like these 'extra' features, so I'll only handle them in one
* way, which is returning them with the command/packet to turn them off
- yahoo_doodle_command_send_extra(gc, from, DOODLE_EXTRA_NONE);
+ yahoo_doodle_command_send_extra(gc, from, DOODLE_EXTRA_NONE, imv_key); static void yahoo_doodle_command_got_confirm(PurpleConnection *gc, const char *from)
@@ -399,34 +406,34 @@
yahoo_packet_send_and_free(pkt, yd);
-void yahoo_doodle_command_send_ready(PurpleConnection *gc, const char *to)
+void yahoo_doodle_command_send_ready(PurpleConnection *gc, const char *to, const char *imv_key) - yahoo_doodle_command_send_generic("Ready", gc, to, "1", DOODLE_CMD_READY, NULL, "1");
+ yahoo_doodle_command_send_generic("Ready", gc, to, "1", DOODLE_CMD_READY, imv_key, "1"); -void yahoo_doodle_command_send_request(PurpleConnection *gc, const char *to)
+void yahoo_doodle_command_send_request(PurpleConnection *gc, const char *to, const char *imv_key) - yahoo_doodle_command_send_generic("Request", gc, to, "", DOODLE_CMD_REQUEST, NULL, "0");
+ yahoo_doodle_command_send_generic("Request", gc, to, "", DOODLE_CMD_REQUEST, imv_key, "0"); -void yahoo_doodle_command_send_draw(PurpleConnection *gc, const char *to, const char *message)
+void yahoo_doodle_command_send_draw(PurpleConnection *gc, const char *to, const char *message, const char *imv_key) - yahoo_doodle_command_send_generic("Draw", gc, to, message, DOODLE_CMD_DRAW, NULL, "1");
+ yahoo_doodle_command_send_generic("Draw", gc, to, message, DOODLE_CMD_DRAW, imv_key, "1"); -void yahoo_doodle_command_send_clear(PurpleConnection *gc, const char *to)
+void yahoo_doodle_command_send_clear(PurpleConnection *gc, const char *to, const char *imv_key) - yahoo_doodle_command_send_generic("Clear", gc, to, " ", DOODLE_CMD_CLEAR, NULL, "1");
+ yahoo_doodle_command_send_generic("Clear", gc, to, " ", DOODLE_CMD_CLEAR, imv_key, "1"); -void yahoo_doodle_command_send_extra(PurpleConnection *gc, const char *to, const char *message)
+void yahoo_doodle_command_send_extra(PurpleConnection *gc, const char *to, const char *message, const char *imv_key) - yahoo_doodle_command_send_generic("Extra", gc, to, message, DOODLE_CMD_EXTRA, NULL, "1");
+ yahoo_doodle_command_send_generic("Extra", gc, to, message, DOODLE_CMD_EXTRA, imv_key, "1"); -void yahoo_doodle_command_send_confirm(PurpleConnection *gc, const char *to)
+void yahoo_doodle_command_send_confirm(PurpleConnection *gc, const char *to, const char *imv_key) - yahoo_doodle_command_send_generic("Confirm", gc, to, "1", DOODLE_CMD_CONFIRM, NULL, "1");
+ yahoo_doodle_command_send_generic("Confirm", gc, to, "1", DOODLE_CMD_CONFIRM, imv_key, "1"); void yahoo_doodle_command_send_shutdown(PurpleConnection *gc, const char *to)
@@ -450,12 +457,14 @@
void yahoo_doodle_end(PurpleWhiteboard *wb)
PurpleConnection *gc = purple_account_get_connection(wb->account);
+ doodle_session *ds = wb->proto_data; /* g_debug_debug("yahoo", "doodle: yahoo_doodle_end()\n"); */
if (gc && wb->state != DOODLE_STATE_CANCELED)
yahoo_doodle_command_send_shutdown(gc, wb->who);
@@ -492,13 +501,14 @@
g_return_if_fail(draw_list != NULL);
message = yahoo_doodle_build_draw_string(ds, draw_list);
- yahoo_doodle_command_send_draw(wb->account->gc, wb->who, message);
+ yahoo_doodle_command_send_draw(wb->account->gc, wb->who, message, ds->imv_key); void yahoo_doodle_clear(PurpleWhiteboard *wb)
- yahoo_doodle_command_send_clear(wb->account->gc, wb->who);
+ doodle_session *ds = wb->proto_data; + yahoo_doodle_command_send_clear(wb->account->gc, wb->who, ds->imv_key); @@ -551,14 +561,14 @@
void yahoo_doodle_get_brush(const PurpleWhiteboard *wb, int *size, int *color)
- doodle_session *ds = (doodle_session *)wb->proto_data;
+ doodle_session *ds = wb->proto_data; *color = ds->brush_color;
void yahoo_doodle_set_brush(PurpleWhiteboard *wb, int size, int color)
- doodle_session *ds = (doodle_session *)wb->proto_data;
+ doodle_session *ds = wb->proto_data; @@ -567,7 +577,7 @@
void yahoo_doodle_process(PurpleConnection *gc, const char *me, const char *from,
- const char *command, const char *message)
+ const char *command, const char *message, const char *imv_key) @@ -576,11 +586,11 @@
- yahoo_doodle_command_got_request(gc, from);
+ yahoo_doodle_command_got_request(gc, from, imv_key); - yahoo_doodle_command_got_ready(gc, from);
+ yahoo_doodle_command_got_ready(gc, from, imv_key); @@ -592,7 +602,7 @@
- yahoo_doodle_command_got_extra(gc, from, message);
+ yahoo_doodle_command_got_extra(gc, from, message, imv_key); --- a/libpurple/protocols/yahoo/yahoo_doodle.h Fri Sep 28 16:32:28 2007 +0000
+++ b/libpurple/protocols/yahoo/yahoo_doodle.h Fri Sep 28 17:13:38 2007 +0000
@@ -31,7 +31,7 @@
-#define DOODLE_IMV_KEY "doodle;103"
+#define DOODLE_IMV_KEY "doodle;106" /******************************************************************************
@@ -94,6 +94,7 @@
int brush_size; /* Size of drawing brush */
int brush_color; /* Color of drawing brush */
/******************************************************************************
@@ -104,17 +105,17 @@
char **error, void *data);
void yahoo_doodle_process(PurpleConnection *gc, const char *me, const char *from,
- const char *command, const char *message);
+ const char *command, const char *message, const char *imv_key); void yahoo_doodle_initiate(PurpleConnection *gc, const char *to);
void yahoo_doodle_command_got_shutdown(PurpleConnection *gc, const char *from);
-void yahoo_doodle_command_send_request(PurpleConnection *gc, const char *to);
-void yahoo_doodle_command_send_ready(PurpleConnection *gc, const char *to);
-void yahoo_doodle_command_send_draw(PurpleConnection *gc, const char *to, const char *message);
-void yahoo_doodle_command_send_clear(PurpleConnection *gc, const char *to);
-void yahoo_doodle_command_send_extra(PurpleConnection *gc, const char *to, const char *message);
-void yahoo_doodle_command_send_confirm(PurpleConnection *gc, const char *to);
+void yahoo_doodle_command_send_request(PurpleConnection *gc, const char *to, const char *imv_key); +void yahoo_doodle_command_send_ready(PurpleConnection *gc, const char *to, const char *imv_key); +void yahoo_doodle_command_send_draw(PurpleConnection *gc, const char *to, const char *message, const char *imv_key); +void yahoo_doodle_command_send_clear(PurpleConnection *gc, const char *to, const char *imv_key); +void yahoo_doodle_command_send_extra(PurpleConnection *gc, const char *to, const char *message, const char *imv_key); +void yahoo_doodle_command_send_confirm(PurpleConnection *gc, const char *to, const char *imv_key); void yahoo_doodle_command_send_shutdown(PurpleConnection *gc, const char *to);
void yahoo_doodle_start(PurpleWhiteboard *wb);
--- a/libpurple/protocols/yahoo/yahoo_filexfer.c Fri Sep 28 16:32:28 2007 +0000
+++ b/libpurple/protocols/yahoo/yahoo_filexfer.c Fri Sep 28 17:13:38 2007 +0000
@@ -452,26 +452,29 @@
struct yahoo_pair *pair = l->data;
- if(pair->key == 5) /* Get who the packet is for */
+ case 5: /* Get who the packet is for */
- if(pair->key == 4) /* Get who the packet is from */
+ case 4: /* Get who the packet is from */
- if(pair->key == 49) /* Get the type of service */
+ case 49: /* Get the type of service */
- if(pair->key == 14) /* Get the 'message' of the packet */
+ case 14: /* Get the 'message' of the packet */
- if(pair->key == 13) /* Get the command associated with this packet */
+ case 13: /* Get the command associated with this packet */
- if(pair->key == 63) /* IMVironment name and version */
+ case 63: /* IMVironment name and version */
- if(pair->key == 64) /* Not sure, but it does vary with initialization of Doodle */
+ case 64: /* Not sure, but it does vary with initialization of Doodle */ unknown = pair->value; /* So, I'll keep it (for a little while atleast) */
@@ -481,7 +484,7 @@
/* Check for a Doodle packet and handle it accordingly */
if(strstr(imv, "doodle;") != NULL)
- yahoo_doodle_process(gc, me, from, command, message);
+ yahoo_doodle_process(gc, me, from, command, message, imv); /* If an IMVIRONMENT packet comes without a specific imviroment name */
@@ -513,24 +516,35 @@
for (l = pkt->hash; l; l = l->next) {
struct yahoo_pair *pair = l->data;
expires = strtol(pair->value, NULL, 10);
filesize = atol(pair->value);
--- a/pidgin/gtkmain.c Fri Sep 28 16:32:28 2007 +0000
+++ b/pidgin/gtkmain.c Fri Sep 28 17:13:38 2007 +0000
@@ -509,7 +509,7 @@
/* We translate this here in case the crash breaks gettext. */
segfault_message_tmp = g_strdup_printf(_(
- "%s %s has segfaulted and attempted to dump a core file.\n"
+ "%s has segfaulted and attempted to dump a core file.\n" "This is a bug in the software and has happened through\n"
"no fault of your own.\n\n"
"If you can reproduce the crash, please notify the developers\n"
@@ -523,7 +523,7 @@
"LSchiere (via AIM). Contact information for Sean and Luke \n"
"on other protocols is at\n"
"%swiki/DeveloperPages\n"),
- PIDGIN_NAME, VERSION, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE
+ PIDGIN_NAME, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE /* we have to convert the message (UTF-8 to console
--- a/pidgin/gtknotify.c Fri Sep 28 16:32:28 2007 +0000
+++ b/pidgin/gtknotify.c Fri Sep 28 17:13:38 2007 +0000
@@ -420,8 +420,6 @@
- icon = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_MEDIUM);
if (count > 0 || clear) {
/* Allow only one non-detailed email notification for each account */
if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(treemodel), &iter)) {
@@ -449,6 +447,11 @@
+ icon = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_MEDIUM); data = g_new0(PidginNotifyMailData, 1);
gtk_tree_store_append(treemodel, &iter, NULL);
@@ -550,9 +553,8 @@
/* There is no API to clear the headline specifically */
/* This will trigger reset_mail_dialog() */
pidgin_blist_set_headline(NULL, NULL, NULL, NULL, NULL);