Mercurial > pidgin
changeset 20295:f837139b3732
merge of '554f47773ad015df16569e503432329570fa1564'
and '868723337c9f90e7c57c05f7fc0178338339179d'
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Mon, 01 Oct 2007 16:41:18 +0000 |
parents | 19d83c5f644d (diff) d41907afb521 (current diff) |
children | 48f03c46b86b 15f61e6b15cd |
files | |
diffstat | 8 files changed, 64 insertions(+), 31 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Sat Sep 29 18:01:34 2007 +0000 +++ b/ChangeLog Mon Oct 01 16:41:18 2007 +0000 @@ -1,6 +1,6 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul -Version 2.2.1: +Version 2.2.1 (09/29/2007): 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 @@ -11,11 +11,15 @@ * 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) + * Fixed multiple memory leaks, particularly in XMPP and MySpace + protocols + * Fixed remembering proxy preferences and status scores * Gmail notifications are better tracked Pidgin: * Fixed keyboard tab reordering to move tabs one step instead of two. * You should no longer lose proxy settings when Pidgin is restarted. + * Fixed detection of X11 when compiling Finch: * Pressing 'Insert' in the buddylist will bring up the 'Add Buddy' @@ -28,7 +32,7 @@ * New protocol plugin: MySpaceIM (Jeff Connelly, Google Summer of Code) * XMPP enhancements. See - http://www.adiumx.com/blog/2007/07/soc-xmpp-update.php (Andreas + http://www.adiumx.com/blog/2007/07/soc-xmpp-update.php (Andreas Monitzer, Google Summer of Code for Adium) * Certificate management. Libpurple will validate certificates on SSL-encrypted protocols (William Ehlhardt, Google Summer of Code)
--- a/NEWS Sat Sep 29 18:01:34 2007 +0000 +++ b/NEWS Mon Oct 01 16:41:18 2007 +0000 @@ -5,6 +5,20 @@ ready for a general release. Instead, this is basically a bug fix release. + Luke: Unfortunately the necessity of this bug fix release means + some of the tickets that have been closed as part of the 2.2.1 + milestone are not actually fixed yet. We have grabbed as many + of the changes as we could while avoiding those that are as + yet unstable though, and this should still be a marked + improvement over 2.2.0. We have spent a lot of time since the + last release looking at the tickets that have been submitted + and many of them have been closed. + + Stu: I haven't NEWS'd in a while. I haven't actually done much for + too long also, maybe I'll find some time soon. This release is + basically what 2.2.0 should have been - it actually compiles this + time. + 2.2.0 (9/13/2007): Sean: 2.2.0 contains the results of several major Google Summer of Code branches bringing some new, extraordinary features. We
--- a/finch/libgnt/gntstyle.c Sat Sep 29 18:01:34 2007 +0000 +++ b/finch/libgnt/gntstyle.c Mon Oct 01 16:41:18 2007 +0000 @@ -26,7 +26,6 @@ #include <glib.h> #include <ctype.h> -#include <glib/gprintf.h> #include <stdlib.h> #include <string.h>
--- a/finch/libgnt/gntwm.c Sat Sep 29 18:01:34 2007 +0000 +++ b/finch/libgnt/gntwm.c Mon Oct 01 16:41:18 2007 +0000 @@ -27,8 +27,8 @@ #include "config.h" +#include <glib.h> #include <ctype.h> -#include <glib/gprintf.h> #include <gmodule.h> #include <stdlib.h> #include <string.h>
--- a/libpurple/plugins/ssl/ssl-gnutls.c Sat Sep 29 18:01:34 2007 +0000 +++ b/libpurple/plugins/ssl/ssl-gnutls.c Mon Oct 01 16:41:18 2007 +0000 @@ -163,9 +163,9 @@ g_list_free(peers); { - const gnutls_datum_t *cert_list; + const gnutls_datum *cert_list; unsigned int cert_list_size = 0; - gnutls_session_t session=gnutls_data->session; + gnutls_session session=gnutls_data->session; int i; cert_list = @@ -182,7 +182,7 @@ gchar tbuf[256]; gsize tsz=sizeof(tbuf); gchar * tasc = NULL; - gnutls_x509_crt_t cert; + gnutls_x509_crt cert; gnutls_x509_crt_init(&cert); gnutls_x509_crt_import (cert, &cert_list[i], @@ -365,7 +365,7 @@ /* Forward declarations are fun! */ static PurpleCertificate * -x509_import_from_datum(const gnutls_datum_t dt, gnutls_x509_crt_fmt_t mode); +x509_import_from_datum(const gnutls_datum dt, gnutls_x509_crt_fmt mode); static GList * ssl_gnutls_get_peer_certificates(PurpleSslConnection * gsc) @@ -376,7 +376,7 @@ GList * peer_certs = NULL; /* List of raw certificates as given by GnuTLS */ - const gnutls_datum_t *cert_list; + const gnutls_datum *cert_list; unsigned int cert_list_size = 0; unsigned int i; @@ -414,7 +414,7 @@ /** Refcounted GnuTLS certificate data instance */ typedef struct { gint refcount; - gnutls_x509_crt_t crt; + gnutls_x509_crt crt; } x509_crtdata_t; /** Helper functions for reference counting */ @@ -446,7 +446,7 @@ /** Helper macro to retrieve the GnuTLS crt_t from a PurpleCertificate */ #define X509_GET_GNUTLS_DATA(pcrt) ( ((x509_crtdata_t *) (pcrt->data))->crt) -/** Transforms a gnutls_datum_t containing an X.509 certificate into a Certificate instance under the x509_gnutls scheme +/** Transforms a gnutls_datum containing an X.509 certificate into a Certificate instance under the x509_gnutls scheme * * @param dt Datum to transform * @param mode GnuTLS certificate format specifier (GNUTLS_X509_FMT_PEM for @@ -456,7 +456,7 @@ * @return A newly allocated Certificate structure of the x509_gnutls scheme */ static PurpleCertificate * -x509_import_from_datum(const gnutls_datum_t dt, gnutls_x509_crt_fmt_t mode) +x509_import_from_datum(const gnutls_datum dt, gnutls_x509_crt_fmt mode) { /* Internal certificate data structure */ x509_crtdata_t *certdat; @@ -491,7 +491,7 @@ PurpleCertificate *crt; /* Certificate being constructed */ gchar *buf; /* Used to load the raw file data */ gsize buf_sz; /* Size of the above */ - gnutls_datum_t dt; /* Struct to pass down to GnuTLS */ + gnutls_datum dt; /* Struct to pass down to GnuTLS */ purple_debug_info("gnutls", "Attempting to load X.509 certificate from %s\n", @@ -532,7 +532,7 @@ static gboolean x509_export_certificate(const gchar *filename, PurpleCertificate *crt) { - gnutls_x509_crt_t crt_dat; /* GnuTLS cert struct */ + gnutls_x509_crt crt_dat; /* GnuTLS cert struct */ int ret; gchar * out_buf; /* Data to output */ size_t out_size; /* Output size */ @@ -639,8 +639,8 @@ x509_certificate_signed_by(PurpleCertificate * crt, PurpleCertificate * issuer) { - gnutls_x509_crt_t crt_dat; - gnutls_x509_crt_t issuer_dat; + gnutls_x509_crt crt_dat; + gnutls_x509_crt issuer_dat; unsigned int verify; /* used to store result from GnuTLS verifier */ int ret; @@ -673,10 +673,10 @@ purple_debug_info("gnutls/x509", "Certificate for %s claims to be " "issued by %s, but the certificate " - "for %s does not match. A strcmp " - "says %d\n", - crt_id, crt_issuer_id, issuer_id, - strcmp(crt_issuer_id, issuer_id)); + "for %s does not match.\n", + crt_id ? crt_id : "(null)", + crt_issuer_id ? crt_issuer_id : "(null)", + issuer_id ? issuer_id : "(null)"); g_free(crt_id); g_free(issuer_id); g_free(crt_issuer_id); @@ -726,7 +726,7 @@ { size_t hashlen = 20; /* SHA1 hashes are 20 bytes */ size_t tmpsz = hashlen; /* Throw-away variable for GnuTLS to stomp on*/ - gnutls_x509_crt_t crt_dat; + gnutls_x509_crt crt_dat; GByteArray *hash; /**< Final hash container */ guchar hashbuf[hashlen]; /**< Temporary buffer to contain hash */ @@ -753,7 +753,7 @@ static gchar * x509_cert_dn (PurpleCertificate *crt) { - gnutls_x509_crt_t cert_dat; + gnutls_x509_crt cert_dat; gchar *dn = NULL; size_t dn_size; @@ -769,7 +769,10 @@ gnutls_x509_crt_get_dn(cert_dat, dn, &dn_size); /* Now allocate and get the Distinguished Name */ - dn = g_new0(gchar, dn_size); + /* Old versions of GnuTLS have an off-by-one error in reporting + the size of the needed buffer in some functions, so allocate + an extra byte */ + dn = g_new0(gchar, ++dn_size); if (0 != gnutls_x509_crt_get_dn(cert_dat, dn, &dn_size)) { purple_debug_error("gnutls/x509", "Failed to get Distinguished Name\n"); @@ -783,7 +786,7 @@ static gchar * x509_issuer_dn (PurpleCertificate *crt) { - gnutls_x509_crt_t cert_dat; + gnutls_x509_crt cert_dat; gchar *dn = NULL; size_t dn_size; @@ -799,7 +802,10 @@ gnutls_x509_crt_get_issuer_dn(cert_dat, dn, &dn_size); /* Now allocate and get the Distinguished Name */ - dn = g_new0(gchar, dn_size); + /* Old versions of GnuTLS have an off-by-one error in reporting + the size of the needed buffer in some functions, so allocate + an extra byte */ + dn = g_new0(gchar, ++dn_size); if (0 != gnutls_x509_crt_get_issuer_dn(cert_dat, dn, &dn_size)) { purple_debug_error("gnutls/x509", "Failed to get issuer's Distinguished " @@ -814,7 +820,7 @@ static gchar * x509_common_name (PurpleCertificate *crt) { - gnutls_x509_crt_t cert_dat; + gnutls_x509_crt cert_dat; gchar *cn = NULL; size_t cn_size; int ret; @@ -835,7 +841,10 @@ cn, &cn_size); /* Now allocate and get the Common Name */ - cn = g_new0(gchar, cn_size); + /* Old versions of GnuTLS have an off-by-one error in reporting + the size of the needed buffer in some functions, so allocate + an extra byte */ + cn = g_new0(gchar, ++cn_size); ret = gnutls_x509_crt_get_dn_by_oid(cert_dat, GNUTLS_OID_X520_COMMON_NAME, 0, /* First CN found, please */ @@ -854,7 +863,7 @@ static gboolean x509_check_name (PurpleCertificate *crt, const gchar *name) { - gnutls_x509_crt_t crt_dat; + gnutls_x509_crt crt_dat; g_return_val_if_fail(crt, FALSE); g_return_val_if_fail(crt->scheme == &x509_gnutls, FALSE); @@ -872,7 +881,7 @@ static gboolean x509_times (PurpleCertificate *crt, time_t *activation, time_t *expiration) { - gnutls_x509_crt_t crt_dat; + gnutls_x509_crt crt_dat; /* GnuTLS time functions return this on error */ const time_t errval = (time_t) (-1);
--- a/libpurple/protocols/jabber/jutil.h Sat Sep 29 18:01:34 2007 +0000 +++ b/libpurple/protocols/jabber/jutil.h Mon Oct 01 16:41:18 2007 +0000 @@ -22,8 +22,6 @@ #ifndef _PURPLE_JABBER_JUTIL_H_ #define _PURPLE_JABBER_JUTIL_H_ -#include "account.h" - typedef struct _JabberID { char *node; char *domain;
--- a/pidgin/gtkconv.c Sat Sep 29 18:01:34 2007 +0000 +++ b/pidgin/gtkconv.c Mon Oct 01 16:41:18 2007 +0000 @@ -6758,7 +6758,9 @@ event = gtk_event_box_new(); gtk_container_add(GTK_CONTAINER(gtkconv->u.im->icon_container), event); +#if GTK_CHECK_VERSION(2,4,0) gtk_event_box_set_visible_window(GTK_EVENT_BOX(event), FALSE); +#endif gtk_widget_add_events(event, GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK); g_signal_connect(G_OBJECT(event), "button-press-event", @@ -8864,7 +8866,9 @@ /* Close button. */ gtkconv->close = gtk_event_box_new(); +#if GTK_CHECK_VERSION(2,4,0) gtk_event_box_set_visible_window(GTK_EVENT_BOX(gtkconv->close), FALSE); +#endif gtk_widget_set_events(gtkconv->close, GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK); close_image = gtk_label_new("×"); g_signal_connect(G_OBJECT(gtkconv->close), "enter-notify-event", G_CALLBACK(close_button_entered_cb), close_image);
--- a/pidgin/gtknotify.c Sat Sep 29 18:01:34 2007 +0000 +++ b/pidgin/gtknotify.c Mon Oct 01 16:41:18 2007 +0000 @@ -430,7 +430,12 @@ PIDGIN_MAIL_DATA, &data, -1); if (data->account == account) { if (clear) { +#if GTK_CHECK_VERSION(2,2,0) advanced = gtk_tree_store_remove(treemodel, &iter); +#else + gtk_tree_store_remove(treemodel, &iter); + advanced = (iter.stamp == 0) ? FALSE : TRUE; +#endif purple_notify_close(PURPLE_NOTIFY_EMAILS, data); /* We're completely done if we've processed all entries */ if (!advanced)