im.pidgin.pidgin: d5db81013385c7da0d1ef09cc2ea31293df711ce

sadrul at pidgin.im sadrul at pidgin.im
Wed Oct 3 10:40:45 EDT 2007


revision:            d5db81013385c7da0d1ef09cc2ea31293df711ce
date:                2007-10-03T14:42:00
author:              sadrul at pidgin.im
branch:              im.pidgin.pidgin
changelog:
merge of '43311ea3963dadd958af56847cc36df60507673f'
     and '530c4f758bc1775758210bea1aa6273313d95b6d'

manifest:
format_version "1"

new_manifest [3415b8d9a2b632a5d85e37c08e8784c192ffad4f]

old_revision [43311ea3963dadd958af56847cc36df60507673f]

add_dir "pidgin/pixmaps/toolbar/11"

add_file "libpurple/protocols/bonjour/dns_sd_proxy.c"
 content [5199882594a26f949814387e509c1766c0f67dd4]

add_file "pidgin/pixmaps/status/11/log-in.png"
 content [0be4a0be280cce09c33ae144538a098abfe260ab]

add_file "pidgin/pixmaps/status/11/log-out.png"
 content [e201025bec5d6e617f6803194d47bcf687b9adc7]

add_file "pidgin/pixmaps/toolbar/11/message-new.png"
 content [e38d4bfbcfc15be6bf236e0590521a0bae7de169]

add_file "share/ca-certs/Microsoft_Secure_Server_Authority.pem"
 content [e1a29b84c3814767aa6bfc86f534fc7cdd70bbe6]

patch "INSTALL"
 from [5b39563912c3e0289a4ea052735e1566b07c513f]
   to [4d53acadb9c90878fb040a49a257a55d13baf6f7]

patch "libpurple/certificate.c"
 from [e92bb3478e85c939e696305a5286afb1b4069c19]
   to [950f284fa04c1cf3515cf50503deb9d55f8fd59e]

patch "libpurple/protocols/bonjour/Makefile.am"
 from [90d47f9af47c6f91ae2437b6776523064549ca32]
   to [66528f8cacc25d2764e00f74003ed1fa14e095da]

patch "libpurple/protocols/bonjour/Makefile.mingw"
 from [d854d40f013c09f8f07c4674c9905b77d6b750b3]
   to [68142a3871b3bcb2be7229170c4bc8ea4fd13943]

patch "libpurple/protocols/bonjour/bonjour.c"
 from [4bf190ec74fffd44c858abfabab31e1cd8cbfa18]
   to [64780fa8de009d3f0535aae3bc3d10505be400da]

patch "libpurple/protocols/bonjour/dns_sd_proxy.h"
 from [5c8bb1f2d994ebfb1554d95a18b59601a1f06e4b]
   to [51e3eb25f562cfbd2a9609ce2511f8a2dedee880]

patch "libpurple/protocols/bonjour/mdns_win32.c"
 from [03e5cd92236058b8970463c7932950f7a356c058]
   to [aeba928ec9fa711f19c2bfbbee52b2ca9c1469c1]

patch "libpurple/protocols/gg/buddylist.c"
 from [aa1eb8a29f943a90c6fb14c0f6934123fc6b8730]
   to [353535de7d31ded3a69e0486d86d6d22604f31e6]

patch "libpurple/protocols/msn/soap.c"
 from [b4246c343cc7a5051c673f14257ab0918a4db156]
   to [8a27072e32a3cb6052fcaafc1dcd0d1abb6b65d7]

patch "pidgin/pidginstock.c"
 from [a1a460cffd8fa050434e5402f4800f561f2528c5]
   to [2c265aa9d5a211ec43e10e414febf9937bb03420]

patch "pidgin/pixmaps/status/11/Makefile.am"
 from [9a19ff6d6fcc1bb1b406d6407a095322e30e8c8b]
   to [206419b4c8fd3cec428f705dab89a09c27326636]

patch "pidgin/pixmaps/toolbar/Makefile.am"
 from [497746a6a16a636054c83cdb0f459206aa1ad609]
   to [c5081b872303b49b303ca69d9ae94176f98e00e1]

patch "pidgin/win32/nsis/pixmaps/pidgin-intro.bmp"
 from [743fe3b36d453397c445fe08ea301f9163b07923]
   to [a286d035366a6522fa166cc53fcbfbaa2f2de370]

patch "share/ca-certs/Makefile.am"
 from [6fdd6599e29bf50e32832da473dbfea86f59cde8]
   to [d33109c71b83ea1f09f3df5b78fcbdb6ebe94232]

  set "pidgin/pixmaps/status/11/log-in.png"
 attr "mtn:manual_merge"
value "true"

  set "pidgin/pixmaps/status/11/log-out.png"
 attr "mtn:manual_merge"
value "true"

  set "pidgin/pixmaps/toolbar/11/message-new.png"
 attr "mtn:manual_merge"
value "true"

old_revision [530c4f758bc1775758210bea1aa6273313d95b6d]

patch "finch/libgnt/gntmain.c"
 from [681d2e87ecf9a093e70f4c6a7dba4c345a0a5e07]
   to [7ddfbc8f64142c8b3f27e408710c3e096e961fdd]
-------------- next part --------------
#
#
# add_dir "pidgin/pixmaps/toolbar/11"
# 
# add_file "libpurple/protocols/bonjour/dns_sd_proxy.c"
#  content [5199882594a26f949814387e509c1766c0f67dd4]
# 
# add_file "pidgin/pixmaps/status/11/log-in.png"
#  content [0be4a0be280cce09c33ae144538a098abfe260ab]
# 
# add_file "pidgin/pixmaps/status/11/log-out.png"
#  content [e201025bec5d6e617f6803194d47bcf687b9adc7]
# 
# add_file "pidgin/pixmaps/toolbar/11/message-new.png"
#  content [e38d4bfbcfc15be6bf236e0590521a0bae7de169]
# 
# add_file "share/ca-certs/Microsoft_Secure_Server_Authority.pem"
#  content [e1a29b84c3814767aa6bfc86f534fc7cdd70bbe6]
# 
# patch "INSTALL"
#  from [5b39563912c3e0289a4ea052735e1566b07c513f]
#    to [4d53acadb9c90878fb040a49a257a55d13baf6f7]
# 
# patch "libpurple/certificate.c"
#  from [e92bb3478e85c939e696305a5286afb1b4069c19]
#    to [950f284fa04c1cf3515cf50503deb9d55f8fd59e]
# 
# patch "libpurple/protocols/bonjour/Makefile.am"
#  from [90d47f9af47c6f91ae2437b6776523064549ca32]
#    to [66528f8cacc25d2764e00f74003ed1fa14e095da]
# 
# patch "libpurple/protocols/bonjour/Makefile.mingw"
#  from [d854d40f013c09f8f07c4674c9905b77d6b750b3]
#    to [68142a3871b3bcb2be7229170c4bc8ea4fd13943]
# 
# patch "libpurple/protocols/bonjour/bonjour.c"
#  from [4bf190ec74fffd44c858abfabab31e1cd8cbfa18]
#    to [64780fa8de009d3f0535aae3bc3d10505be400da]
# 
# patch "libpurple/protocols/bonjour/dns_sd_proxy.h"
#  from [5c8bb1f2d994ebfb1554d95a18b59601a1f06e4b]
#    to [51e3eb25f562cfbd2a9609ce2511f8a2dedee880]
# 
# patch "libpurple/protocols/bonjour/mdns_win32.c"
#  from [03e5cd92236058b8970463c7932950f7a356c058]
#    to [aeba928ec9fa711f19c2bfbbee52b2ca9c1469c1]
# 
# patch "libpurple/protocols/gg/buddylist.c"
#  from [aa1eb8a29f943a90c6fb14c0f6934123fc6b8730]
#    to [353535de7d31ded3a69e0486d86d6d22604f31e6]
# 
# patch "libpurple/protocols/msn/soap.c"
#  from [b4246c343cc7a5051c673f14257ab0918a4db156]
#    to [8a27072e32a3cb6052fcaafc1dcd0d1abb6b65d7]
# 
# patch "pidgin/pidginstock.c"
#  from [a1a460cffd8fa050434e5402f4800f561f2528c5]
#    to [2c265aa9d5a211ec43e10e414febf9937bb03420]
# 
# patch "pidgin/pixmaps/status/11/Makefile.am"
#  from [9a19ff6d6fcc1bb1b406d6407a095322e30e8c8b]
#    to [206419b4c8fd3cec428f705dab89a09c27326636]
# 
# patch "pidgin/pixmaps/toolbar/Makefile.am"
#  from [497746a6a16a636054c83cdb0f459206aa1ad609]
#    to [c5081b872303b49b303ca69d9ae94176f98e00e1]
# 
# patch "pidgin/win32/nsis/pixmaps/pidgin-intro.bmp"
#  from [743fe3b36d453397c445fe08ea301f9163b07923]
#    to [a286d035366a6522fa166cc53fcbfbaa2f2de370]
# 
# patch "share/ca-certs/Makefile.am"
#  from [6fdd6599e29bf50e32832da473dbfea86f59cde8]
#    to [d33109c71b83ea1f09f3df5b78fcbdb6ebe94232]
# 
#   set "pidgin/pixmaps/status/11/log-in.png"
#  attr "mtn:manual_merge"
# value "true"
# 
#   set "pidgin/pixmaps/status/11/log-out.png"
#  attr "mtn:manual_merge"
# value "true"
# 
#   set "pidgin/pixmaps/toolbar/11/message-new.png"
#  attr "mtn:manual_merge"
# value "true"
#
============================================================
--- libpurple/protocols/bonjour/dns_sd_proxy.c	5199882594a26f949814387e509c1766c0f67dd4
+++ libpurple/protocols/bonjour/dns_sd_proxy.c	5199882594a26f949814387e509c1766c0f67dd4
@@ -0,0 +1,181 @@
+/**
+ *
+ * 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 Library 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 "win32dep.h"
+#include "dns_sd_proxy.h"
+
+#ifndef LINK_DNS_SD_DIRECTLY
+static DNSServiceErrorType (DNSSD_API* _DNSServiceAddRecord)(DNSServiceRef sdRef, DNSRecordRef *RecordRef, DNSServiceFlags flags,
+		uint16_t rrtype, uint16_t rdlen, const void *rdata, uint32_t ttl);
+static DNSServiceErrorType (DNSSD_API* _DNSServiceBrowse)(DNSServiceRef *sdRef, DNSServiceFlags flags, uint32_t interfaceIndex,
+	const char *regtype, const char *domain, DNSServiceBrowseReply callBack, void *context);
+static int (DNSSD_API* _DNSServiceConstructFullName)(char *fullName, const char *service, const char *regtype, const char *domain);
+static DNSServiceErrorType (DNSSD_API* _DNSServiceProcessResult)(DNSServiceRef sdRef);
+static DNSServiceErrorType (DNSSD_API* _DNSServiceQueryRecord)(DNSServiceRef *sdRef, DNSServiceFlags flags, uint32_t interfaceIndex,
+	const char *fullname, uint16_t rrtype, uint16_t rrclass, DNSServiceQueryRecordReply callBack, void *context);
+static void (DNSSD_API* _DNSServiceRefDeallocate)(DNSServiceRef sdRef);
+static int (DNSSD_API* _DNSServiceRefSockFD)(DNSServiceRef sdRef);
+static DNSServiceErrorType (DNSSD_API* _DNSServiceRegister)(DNSServiceRef *sdRef, DNSServiceFlags flags, uint32_t interfaceIndex,
+	const char *name, const char *regtype, const char *domain, const char *host, uint16_t port, uint16_t txtLen,
+	const void *txtRecord, DNSServiceRegisterReply callBack, void *context);
+static DNSServiceErrorType (DNSSD_API* _DNSServiceResolve)(DNSServiceRef *sdRef, DNSServiceFlags flags, uint32_t interfaceIndex, const char *name,
+	const char *regtype, const char *domain, DNSServiceResolveReply callBack, void *context);
+static DNSServiceErrorType (DNSSD_API* _DNSServiceRemoveRecord)(DNSServiceRef sdRef, DNSRecordRef RecordRef, DNSServiceFlags flags);
+static DNSServiceErrorType (DNSSD_API* _DNSServiceUpdateRecord)(DNSServiceRef sdRef, DNSRecordRef RecordRef, DNSServiceFlags flags,
+	uint16_t rdlen, const void *rdata, uint32_t ttl);
+static void (DNSSD_API* _TXTRecordCreate)(TXTRecordRef *txtRecord, uint16_t bufferLen, void *buffer);
+static void (DNSSD_API* _TXTRecordDeallocate)(TXTRecordRef *txtRecord);
+static const void * (DNSSD_API* _TXTRecordGetBytesPtr)(const TXTRecordRef *txtRecord);
+static int16_t (DNSSD_API* _TXTRecordGetLength)(const TXTRecordRef *txtRecord);
+static const void * (DNSSD_API* _TXTRecordGetValuePtr)(uint16_t txtLen, const void *txtRecord, const char *key, uint8_t *valueLen);
+static DNSServiceErrorType (DNSSD_API* _TXTRecordSetValue)(TXTRecordRef *txtRecord, const char *key, uint8_t valueSize, const void *value);
+#endif
+
+gboolean dns_sd_available(void) {
+#ifndef LINK_DNS_SD_DIRECTLY
+	static gboolean initialized = FALSE;
+	static gboolean loaded = FALSE;
+
+	if (!initialized) {
+		initialized = TRUE;
+		if ((_DNSServiceAddRecord = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceAddRecord"))
+				&& (_DNSServiceBrowse = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceBrowse"))
+				&& (_DNSServiceConstructFullName = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceConstructFullName"))
+				&& (_DNSServiceProcessResult = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceProcessResult"))
+				&& (_DNSServiceQueryRecord = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceQueryRecord"))
+				&& (_DNSServiceRefDeallocate = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceRefDeallocate"))
+				&& (_DNSServiceRefSockFD = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceRefSockFD"))
+				&& (_DNSServiceRegister = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceRegister"))
+				&& (_DNSServiceResolve = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceResolve"))
+				&& (_DNSServiceRemoveRecord = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceRemoveRecord"))
+				&& (_DNSServiceUpdateRecord = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceUpdateRecord"))
+				&& (_TXTRecordCreate = (void *) wpurple_find_and_loadproc("dnssd.dll", "TXTRecordCreate"))
+				&& (_TXTRecordDeallocate = (void *) wpurple_find_and_loadproc("dnssd.dll", "TXTRecordDeallocate"))
+				&& (_TXTRecordGetBytesPtr = (void *) wpurple_find_and_loadproc("dnssd.dll", "TXTRecordGetBytesPtr"))
+				&& (_TXTRecordGetLength = (void *) wpurple_find_and_loadproc("dnssd.dll", "TXTRecordGetLength"))
+				&& (_TXTRecordGetValuePtr = (void *) wpurple_find_and_loadproc("dnssd.dll", "TXTRecordGetValuePtr"))
+				&& (_TXTRecordSetValue = (void *) wpurple_find_and_loadproc("dnssd.dll", "TXTRecordSetValue"))) {
+			loaded = TRUE;
+		}
+	}
+	return loaded;
+#else
+	return TRUE;
+#endif
+}
+
+#ifndef LINK_DNS_SD_DIRECTLY
+
+DNSServiceErrorType _wpurple_DNSServiceAddRecord(DNSServiceRef sdRef, DNSRecordRef *RecordRef, DNSServiceFlags flags,
+		uint16_t rrtype, uint16_t rdlen, const void *rdata, uint32_t ttl) {
+	g_return_val_if_fail(_DNSServiceAddRecord != NULL, kDNSServiceErr_Unknown);
+	return (_DNSServiceAddRecord)(sdRef, RecordRef, flags, rrtype, rdlen, rdata, ttl);
+}
+
+DNSServiceErrorType _wpurple_DNSServiceBrowse(DNSServiceRef *sdRef, DNSServiceFlags flags, uint32_t interfaceIndex,
+		const char *regtype, const char *domain, DNSServiceBrowseReply callBack, void *context) {
+	g_return_val_if_fail(_DNSServiceBrowse != NULL, kDNSServiceErr_Unknown);
+	return (_DNSServiceBrowse)(sdRef, flags, interfaceIndex, regtype, domain, callBack, context);
+}
+
+int _wpurple_DNSServiceConstructFullName(char *fullName, const char *service, const char *regtype, const char *domain) {
+	g_return_val_if_fail(_DNSServiceConstructFullName != NULL, 0);
+	return (_DNSServiceConstructFullName)(fullName, service, regtype, domain);
+}
+
+DNSServiceErrorType _wpurple_DNSServiceProcessResult(DNSServiceRef sdRef) {
+	g_return_val_if_fail(_DNSServiceProcessResult != NULL, kDNSServiceErr_Unknown);
+	return (_DNSServiceProcessResult)(sdRef);
+}
+
+
+DNSServiceErrorType _wpurple_DNSServiceQueryRecord(DNSServiceRef *sdRef, DNSServiceFlags flags, uint32_t interfaceIndex,
+		const char *fullname, uint16_t rrtype, uint16_t rrclass, DNSServiceQueryRecordReply callBack, void *context) {
+	g_return_val_if_fail(_DNSServiceQueryRecord != NULL, kDNSServiceErr_Unknown);
+	return (_DNSServiceQueryRecord)(sdRef, flags, interfaceIndex, fullname, rrtype, rrclass, callBack, context);
+}
+
+void _wpurple_DNSServiceRefDeallocate(DNSServiceRef sdRef) {
+	g_return_if_fail(_DNSServiceRefDeallocate != NULL);
+	(_DNSServiceRefDeallocate)(sdRef);
+}
+
+int _wpurple_DNSServiceRefSockFD(DNSServiceRef sdRef) {
+	g_return_val_if_fail(_DNSServiceRefSockFD != NULL, -1);
+	return (_DNSServiceRefSockFD)(sdRef);
+}
+
+DNSServiceErrorType _wpurple_DNSServiceRegister(DNSServiceRef *sdRef, DNSServiceFlags flags, uint32_t interfaceIndex,
+		const char *name, const char *regtype, const char *domain, const char *host, uint16_t port, uint16_t txtLen,
+		const void *txtRecord, DNSServiceRegisterReply callBack, void *context) {
+	g_return_val_if_fail(_DNSServiceRegister != NULL, kDNSServiceErr_Unknown);
+	return (_DNSServiceRegister)(sdRef, flags, interfaceIndex, name, regtype, domain, host, port, txtLen, txtRecord, callBack, context);
+}
+
+DNSServiceErrorType _wpurple_DNSServiceResolve(DNSServiceRef *sdRef, DNSServiceFlags flags, uint32_t interfaceIndex, const char *name,
+		const char *regtype, const char *domain, DNSServiceResolveReply callBack, void *context) {
+	g_return_val_if_fail(_DNSServiceResolve != NULL, kDNSServiceErr_Unknown);
+	return (_DNSServiceResolve)(sdRef, flags, interfaceIndex, name, regtype, domain, callBack, context);
+}
+
+DNSServiceErrorType _wpurple_DNSServiceRemoveRecord(DNSServiceRef sdRef, DNSRecordRef RecordRef, DNSServiceFlags flags) {
+	g_return_val_if_fail(_DNSServiceRemoveRecord != NULL, kDNSServiceErr_Unknown);
+	return (_DNSServiceRemoveRecord)(sdRef, RecordRef, flags);
+}
+
+DNSServiceErrorType _wpurple_DNSServiceUpdateRecord(DNSServiceRef sdRef, DNSRecordRef RecordRef, DNSServiceFlags flags,
+		uint16_t rdlen, const void *rdata, uint32_t ttl) {
+	g_return_val_if_fail(_DNSServiceUpdateRecord != NULL, kDNSServiceErr_Unknown);
+	return (_DNSServiceUpdateRecord)(sdRef, RecordRef, flags, rdlen, rdata, ttl);
+}
+
+void _wpurple_TXTRecordCreate(TXTRecordRef *txtRecord, uint16_t bufferLen, void *buffer) {
+	g_return_if_fail(_TXTRecordCreate != NULL);
+	(_TXTRecordCreate)(txtRecord, bufferLen, buffer);
+}
+
+void _wpurple_TXTRecordDeallocate(TXTRecordRef *txtRecord) {
+	g_return_if_fail(_TXTRecordDeallocate != NULL);
+	(_TXTRecordDeallocate)(txtRecord);
+}
+
+const void * _wpurple_TXTRecordGetBytesPtr(const TXTRecordRef *txtRecord) {
+	g_return_val_if_fail(_TXTRecordGetBytesPtr != NULL, NULL);
+	return (_TXTRecordGetBytesPtr)(txtRecord);
+}
+
+uint16_t _wpurple_TXTRecordGetLength(const TXTRecordRef *txtRecord) {
+	g_return_val_if_fail(_TXTRecordGetLength != NULL, 0);
+	return (_TXTRecordGetLength)(txtRecord);
+}
+
+const void * _wpurple_TXTRecordGetValuePtr(uint16_t txtLen, const void *txtRecord, const char *key, uint8_t *valueLen) {
+	g_return_val_if_fail(_TXTRecordGetValuePtr != NULL, NULL);
+	return (_TXTRecordGetValuePtr)(txtLen, txtRecord, key, valueLen);
+}
+
+DNSServiceErrorType _wpurple_TXTRecordSetValue(TXTRecordRef *txtRecord, const char *key, uint8_t valueSize, const void *value) {
+	g_return_val_if_fail(_TXTRecordSetValue != NULL, kDNSServiceErr_Unknown);
+	return (_TXTRecordSetValue)(txtRecord, key, valueSize, value);
+}
+
+#endif /*LINK_DNS_SD_DIRECTLY*/
+
============================================================
# pidgin/pixmaps/status/11/log-in.png is binary
============================================================
# pidgin/pixmaps/status/11/log-out.png is binary
============================================================
# pidgin/pixmaps/toolbar/11/message-new.png is binary
============================================================
--- share/ca-certs/Microsoft_Secure_Server_Authority.pem	e1a29b84c3814767aa6bfc86f534fc7cdd70bbe6
+++ share/ca-certs/Microsoft_Secure_Server_Authority.pem	e1a29b84c3814767aa6bfc86f534fc7cdd70bbe6
@@ -0,0 +1,28 @@
+-----BEGIN CERTIFICATE-----
+MIIE1TCCA72gAwIBAgIKYSsApAADAAAAFDANBgkqhkiG9w0BAQUFADAnMSUwIwYD
+VQQDExxNaWNyb3NvZnQgSW50ZXJuZXQgQXV0aG9yaXR5MB4XDTA2MDQyMTE5MTEw
+NFoXDTA5MDQxOTIzNTkwMFowgYsxEzARBgoJkiaJk/IsZAEZFgNjb20xGTAXBgoJ
+kiaJk/IsZAEZFgltaWNyb3NvZnQxFDASBgoJkiaJk/IsZAEZFgRjb3JwMRcwFQYK
+CZImiZPyLGQBGRYHcmVkbW9uZDEqMCgGA1UEAxMhTWljcm9zb2Z0IFNlY3VyZSBT
+ZXJ2ZXIgQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
+syn2tJzCJKsQy98cYrzBT0qMSqTMibRel34u64jqd1GKP9cRMHagyNLZIb1rv8NZ
+XPdf2uI8hGc4lxRh4iprbFPOZSiHQIyq9zoqLS7Bh/KnqnRX4CCntCQbWVa/s5c5
+FbGD5XG5AvA8sjn56WPotYLGeWrSZ/k2bcH9YgvQ2Yrt8t1VxPQciSuX82KSn2Kx
+xxJKgQtAgZpyekR5QdIUUvQsEAPaCfWRsF/OMQoyc4UeAxAELavr2vlq869ye3Fu
+f3fUhVEk8kxtiVPYWYBTAhWts62pEwaKGPteMsGnvbX+BRgIwc55vfs6KWXxnBUL
+9Q8BfQQLbT8nQe7hO4XXMQIDAQABo4IBnDCCAZgwEgYDVR0TAQH/BAgwBgEB/wIB
+ATAdBgNVHQ4EFgQUp08F+9GOQVM3lcpL4UMfWutNzVAwCwYDVR0PBAQDAgGGMBIG
+CSsGAQQBgjcVAQQFAgMDAAMwIwYJKwYBBAGCNxUCBBYEFMnAnEM4ke3T6fpSclUI
+g7XN8o57MBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMB8GA1UdIwQYMBaAFDNf
+3Q+3nFzO7ofdcHCLX33PIry5MGYGA1UdHwRfMF0wW6BZoFeGNGh0dHA6Ly9jcmwu
+bWljcm9zb2Z0LmNvbS9wa2kvbXNjb3JwL2NybC9tc3d3dygzKS5jcmyGH2h0dHA6
+Ly9jb3JwcGtpL2NybC9tc3d3dygzKS5jcmwweQYIKwYBBQUHAQEEbTBrMDwGCCsG
+AQUFBzAChjBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL21zY29ycC9tc3d3
+dygzKS5jcnQwKwYIKwYBBQUHMAKGH2h0dHA6Ly9jb3JwcGtpL2FpYS9tc3d3dygz
+KS5jcnQwDQYJKoZIhvcNAQEFBQADggEBAIJDQpkqhodC3ZmKPB4dTveoFCpuc4C0
+qdXPLggvRiTnQJP/SRdnfQwkaulDS3771zWo3fO1/tTiCmVvtU4LNbISpQmrz41q
+AP2QIUl/d4Fjiaz0qchNxmTRlVLGsTrwkMMkOh9MUQEcNyk9RuGepf/1+66qeEnx
+eCgK09yIcbgdE9ffk5ueTX7TNfgoNZO9ORnRS1p7nra3b0Wi1kdGqDmbpw7We+M8
+6B8VpPa0QaofgRdl2dzOijd7hGN+cgRNMvdGpRxzkaWUA52rBOrEVyJLu2IUksPV
+0Q/0ZZMNZXJh8MmWW/o8ebQZJQshN5p4M7HiUN/cZ2onnrdZSpIwyAU=
+-----END CERTIFICATE-----
============================================================
--- INSTALL	5b39563912c3e0289a4ea052735e1566b07c513f
+++ INSTALL	4d53acadb9c90878fb040a49a257a55d13baf6f7
@@ -40,7 +40,8 @@ The simplest way to compile this package
      the package.
 
   4. Type `make install' to install the programs and any data files and
-     documentation.
+     documentation.  You must have write access to the prefix you are
+	 installing to.  See below for more details on the prefix.
 
   5. You can remove the program binaries and object files from the
      source code directory by typing `make clean'.  To also remove the
============================================================
--- libpurple/certificate.c	e92bb3478e85c939e696305a5286afb1b4069c19
+++ libpurple/certificate.c	950f284fa04c1cf3515cf50503deb9d55f8fd59e
@@ -88,6 +88,19 @@ purple_certificate_verify_complete(Purpl
 
 	g_return_if_fail(vrq);
 
+	if (st == PURPLE_CERTIFICATE_VALID) {
+		purple_debug_info("certificate",
+				  "Successfully verified certificate for %s\n",
+				  vrq->subject_name);
+	} else {
+		purple_debug_info("certificate",
+				  "Failed to verify certificate for %s\n",
+				  vrq->subject_name);
+	}
+		
+		
+		
+	
 	/* Pass the results on to the request's callback */
 	(vrq->cb)(st, vrq->cb_data);
 
@@ -1372,7 +1385,8 @@ x509_tls_cached_unknown_peer(PurpleCerti
 	purple_debug_info("certificate/x509/tls_cached",
 			  "Checking for a CA with DN=%s\n",
 			  ca_id);
-	if ( !purple_certificate_pool_contains(ca, ca_id) ) {
+	ca_crt = purple_certificate_pool_retrieve(ca, ca_id);
+	if ( NULL == ca_crt ) {
 		purple_debug_info("certificate/x509/tls_cached",
 				  "Certificate Authority with DN='%s' not "
 				  "found. I'll prompt the user, I guess.\n",
@@ -1385,16 +1399,7 @@ x509_tls_cached_unknown_peer(PurpleCerti
 		return;
 	}
 
-	ca_crt = purple_certificate_pool_retrieve(ca, ca_id);
 	g_free(ca_id);
-	if (!ca_crt) {
-		purple_debug_error("certificate/x509/tls_cached",
-				   "Certificate authority disappeared out "
-				   "underneath me!\n");
-		purple_certificate_verify_complete(vrq,
-						   PURPLE_CERTIFICATE_INVALID);
-		return;
-	}
 	
 	/* Check the signature */
 	if ( !purple_certificate_signed_by(end_crt, ca_crt) ) {
============================================================
--- libpurple/protocols/bonjour/Makefile.am	90d47f9af47c6f91ae2437b6776523064549ca32
+++ libpurple/protocols/bonjour/Makefile.am	66528f8cacc25d2764e00f74003ed1fa14e095da
@@ -1,5 +1,6 @@ EXTRA_DIST = \
 EXTRA_DIST = \
 	mdns_win32.c \
+	dns_sd_proxy.c \
 	dns_sd_proxy.h \
 	Makefile.mingw
 
============================================================
--- libpurple/protocols/bonjour/Makefile.mingw	d854d40f013c09f8f07c4674c9905b77d6b750b3
+++ libpurple/protocols/bonjour/Makefile.mingw	68142a3871b3bcb2be7229170c4bc8ea4fd13943
@@ -45,6 +45,7 @@ C_SRC =			bonjour.c \
 ##
 C_SRC =			bonjour.c \
 			buddy.c \
+			dns_sd_proxy.c \
 			mdns_common.c \
 			mdns_win32.c \
 			parser.c \
@@ -59,11 +60,15 @@ LIBS =	\
 			-lglib-2.0 \
 			-lws2_32 \
 			-lintl \
-			-ldnssd \
 			-lnetapi32 \
 			-lxml2 \
 			-lpurple
 
+ifeq ($(LINK_DNS_SD_DIRECTLY), 1)
+	CFLAGS += -DLINK_DNS_SD_DIRECTLY
+	LIBS += -ldnssd
+endif
+
 include $(PIDGIN_COMMON_RULES)
 
 ##
============================================================
--- libpurple/protocols/bonjour/bonjour.c	4bf190ec74fffd44c858abfabab31e1cd8cbfa18
+++ libpurple/protocols/bonjour/bonjour.c	64780fa8de009d3f0535aae3bc3d10505be400da
@@ -26,6 +26,7 @@
 #define UNICODE
 #include <windows.h>
 #include <lm.h>
+#include "dns_sd_proxy.h"
 #endif
 
 #include "internal.h"
@@ -99,6 +100,17 @@ bonjour_login(PurpleAccount *account)
 	PurpleStatus *status;
 	PurplePresence *presence;
 
+#ifdef _WIN32
+	if (!dns_sd_available()) {
+		gc->wants_to_die = TRUE;
+		purple_connection_error(gc,
+			_("The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: "
+			  "http://developer.pidgin.im/wiki/Using%20Pidgin#CanIusePidginforBonjourLink-LocalMessaging"
+			  " for more information."));
+		return;
+	}
+#endif
+
 	gc->flags |= PURPLE_CONNECTION_HTML;
 	gc->proto_data = bd = g_new0(BonjourData, 1);
 
@@ -155,13 +167,13 @@ bonjour_close(PurpleConnection *connecti
 	BonjourData *bd = connection->proto_data;
 
 	/* Stop looking for buddies in the LAN */
-	if (bd->dns_sd_data != NULL)
+	if (bd != NULL && bd->dns_sd_data != NULL)
 	{
 		bonjour_dns_sd_stop(bd->dns_sd_data);
 		bonjour_dns_sd_free(bd->dns_sd_data);
 	}
 
-	if (bd->jabber_data != NULL)
+	if (bd != NULL && bd->jabber_data != NULL)
 	{
 		/* Stop waiting for conversations */
 		bonjour_jabber_stop(bd->jabber_data);
============================================================
--- libpurple/protocols/bonjour/dns_sd_proxy.h	5c8bb1f2d994ebfb1554d95a18b59601a1f06e4b
+++ libpurple/protocols/bonjour/dns_sd_proxy.h	51e3eb25f562cfbd2a9609ce2511f8a2dedee880
@@ -10,4 +10,85 @@
 
 #include <dns_sd.h>
 
+gboolean dns_sd_available(void);
+
+#ifndef LINK_DNS_SD_DIRECTLY
+
+DNSServiceErrorType _wpurple_DNSServiceAddRecord(DNSServiceRef sdRef, DNSRecordRef *RecordRef, DNSServiceFlags flags,
+	uint16_t rrtype, uint16_t rdlen, const void *rdata, uint32_t ttl);
+#define DNSServiceAddRecord(sdRef, RecordRef, flags, rrtype, rdlen, rdata, ttl) \
+	_wpurple_DNSServiceAddRecord(sdRef, RecordRef, flags, rrtype, rdlen, rdata, ttl)
+
+DNSServiceErrorType _wpurple_DNSServiceBrowse(DNSServiceRef *sdRef, DNSServiceFlags flags, uint32_t interfaceIndex,
+	const char *regtype, const char *domain, DNSServiceBrowseReply callBack, void *context);
+#define DNSServiceBrowse(sdRef, flags, interfaceIndex, regtype, domain, callBack, context) \
+	_wpurple_DNSServiceBrowse(sdRef, flags, interfaceIndex, regtype, domain, callBack, context)
+
+int _wpurple_DNSServiceConstructFullName(char *fullName, const char *service, const char *regtype, const char *domain);
+#define DNSServiceConstructFullName(fullName, service, regtype, domain) \
+	_wpurple_DNSServiceConstructFullName(fullName, service, regtype, domain)
+
+DNSServiceErrorType _wpurple_DNSServiceProcessResult(DNSServiceRef sdRef);
+#define DNSServiceProcessResult(sdRef) \
+	_wpurple_DNSServiceProcessResult(sdRef);
+
+DNSServiceErrorType _wpurple_DNSServiceQueryRecord(DNSServiceRef *sdRef, DNSServiceFlags flags, uint32_t interfaceIndex,
+	const char *fullname, uint16_t rrtype, uint16_t rrclass, DNSServiceQueryRecordReply callBack, void *context);
+#define DNSServiceQueryRecord(sdRef, flags, interfaceIndex, fullname, rrtype, rrclass, callBack, context) \
+	_wpurple_DNSServiceQueryRecord(sdRef, flags, interfaceIndex, fullname, rrtype, rrclass, callBack, context)
+
+void _wpurple_DNSServiceRefDeallocate(DNSServiceRef sdRef);
+#define DNSServiceRefDeallocate(sdRef) \
+	_wpurple_DNSServiceRefDeallocate(sdRef)
+
+int _wpurple_DNSServiceRefSockFD(DNSServiceRef sdRef);
+#define DNSServiceRefSockFD(sdRef) \
+	_wpurple_DNSServiceRefSockFD(sdRef)
+
+DNSServiceErrorType _wpurple_DNSServiceRegister(DNSServiceRef *sdRef, DNSServiceFlags flags, uint32_t interfaceIndex,
+	const char *name, const char *regtype, const char *domain, const char *host, uint16_t port, uint16_t txtLen,
+	const void *txtRecord, DNSServiceRegisterReply callBack, void *context);
+#define DNSServiceRegister(sdRef, flags, interfaceIndex, name, regtype, domain, host, port, txtLen, txtRecord, callBack, context) \
+	_wpurple_DNSServiceRegister(sdRef, flags, interfaceIndex, name, regtype, domain, host, port, txtLen, txtRecord, callBack, context)
+
+DNSServiceErrorType _wpurple_DNSServiceResolve(DNSServiceRef *sdRef, DNSServiceFlags flags, uint32_t interfaceIndex, const char *name,
+	const char *regtype, const char *domain, DNSServiceResolveReply callBack, void *context);
+#define DNSServiceResolve(sdRef, flags, interfaceIndex, name, regtype, domain, callBack, context) \
+	_wpurple_DNSServiceResolve(sdRef, flags, interfaceIndex, name, regtype, domain, callBack, context)
+
+DNSServiceErrorType _wpurple_DNSServiceRemoveRecord(DNSServiceRef sdRef, DNSRecordRef RecordRef, DNSServiceFlags flags);
+#define DNSServiceRemoveRecord(sdRef, RecordRef, flags) \
+	_wpurple_DNSServiceRemoveRecord(sdRef, RecordRef, flags)
+
+DNSServiceErrorType _wpurple_DNSServiceUpdateRecord(DNSServiceRef sdRef, DNSRecordRef RecordRef, DNSServiceFlags flags,
+	uint16_t rdlen, const void *rdata, uint32_t ttl);
+#define DNSServiceUpdateRecord(sdRef, RecordRef, flags, rdlen, rdata, ttl) \
+	_wpurple_DNSServiceUpdateRecord(sdRef, RecordRef, flags, rdlen, rdata, ttl)
+
+void _wpurple_TXTRecordCreate(TXTRecordRef *txtRecord, uint16_t bufferLen, void *buffer);
+#define TXTRecordCreate(txtRecord, bufferLen, buffer) \
+	_wpurple_TXTRecordCreate(txtRecord, bufferLen, buffer)
+
+void _wpurple_TXTRecordDeallocate(TXTRecordRef *txtRecord);
+#define TXTRecordDeallocate(txtRecord) \
+	_wpurple_TXTRecordDeallocate(txtRecord)
+
+const void * _wpurple_TXTRecordGetBytesPtr(const TXTRecordRef *txtRecord);
+#define TXTRecordGetBytesPtr(txtRecord) \
+	_wpurple_TXTRecordGetBytesPtr(txtRecord)
+
+uint16_t _wpurple_TXTRecordGetLength(const TXTRecordRef *txtRecord);
+#define TXTRecordGetLength(txtRecord) \
+	_wpurple_TXTRecordGetLength(txtRecord)
+
+const void * _wpurple_TXTRecordGetValuePtr(uint16_t txtLen, const void *txtRecord, const char *key, uint8_t *valueLen);
+#define TXTRecordGetValuePtr(txtLen, txtRecord, key, valueLen) \
+	_wpurple_TXTRecordGetValuePtr(txtLen, txtRecord, key, valueLen)
+
+DNSServiceErrorType _wpurple_TXTRecordSetValue(TXTRecordRef *txtRecord, const char *key, uint8_t valueSize, const void *value);
+#define TXTRecordSetValue(txtRecord, key, valueSize, value) \
+	_wpurple_TXTRecordSetValue(txtRecord, key, valueSize, value)
+
+#endif /*LINK_DNS_SD_DIRECTLY*/
+
 #endif
============================================================
--- libpurple/protocols/bonjour/mdns_win32.c	03e5cd92236058b8970463c7932950f7a356c058
+++ libpurple/protocols/bonjour/mdns_win32.c	aeba928ec9fa711f19c2bfbbee52b2ca9c1469c1
@@ -1,4 +1,9 @@
-/*
+/**
+ *
+ * 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
============================================================
--- libpurple/protocols/gg/buddylist.c	aa1eb8a29f943a90c6fb14c0f6934123fc6b8730
+++ libpurple/protocols/gg/buddylist.c	353535de7d31ded3a69e0486d86d6d22604f31e6
@@ -27,6 +27,13 @@
 #include "gg-utils.h"
 #include "buddylist.h"
 
+#define F_FIRSTNAME 0
+#define F_LASTNAME 1
+/* #define F_ 2 */
+#define F_NICKNAME 3
+#define F_PHONE 4
+#define F_GROUP 5
+#define F_UIN 6
 
 /* void ggp_buddylist_send(PurpleConnection *gc) {{{ */
 void ggp_buddylist_send(PurpleConnection *gc)
@@ -90,7 +97,7 @@ void ggp_buddylist_load(PurpleConnection
 	gchar **users_tbl;
 	int i;
 
-	/* Don't limit a number of records in a buddylist. */
+	/* Don't limit the number of records in a buddylist. */
 	users_tbl = g_strsplit(buddylist, "\r\n", -1);
 
 	for (i = 0; users_tbl[i] != NULL; i++) {
@@ -108,8 +115,8 @@ void ggp_buddylist_load(PurpleConnection
 			continue;
 		}
 
-		show = charset_convert(data_tbl[3], "CP1250", "UTF-8");
-		name = data_tbl[6];
+		show = charset_convert(data_tbl[F_NICKNAME], "CP1250", "UTF-8");
+		name = data_tbl[F_UIN];
 		if ('\0' == *name) {
 			purple_debug_warning("gg",
 				"Something is wrong on line %d of the buddylist. Skipping.\n",
@@ -121,7 +128,7 @@ void ggp_buddylist_load(PurpleConnection
 			show = g_strdup(name);
 		}
 
-		purple_debug_info("gg", "got buddy: name=%s show=%s\n", name, show);
+		purple_debug_info("gg", "got buddy: name=%s; show=%s\n", name, show);
 
 		if (purple_find_buddy(purple_connection_get_account(gc), name)) {
 			g_free(show);
@@ -131,19 +138,19 @@ void ggp_buddylist_load(PurpleConnection
 
 		g = g_strdup("Gadu-Gadu");
 
-		if ('\0' != data_tbl[5]) {
+		if ('\0' != data_tbl[F_GROUP]) {
 			/* XXX: Probably buddy should be added to all the groups. */
 			/* Hard limit to at most 50 groups */
-			gchar **group_tbl = g_strsplit(data_tbl[5], ",", 50);
+			gchar **group_tbl = g_strsplit(data_tbl[F_GROUP], ",", 50);
 			if (ggp_array_size(group_tbl) > 0) {
 				g_free(g);
-				g = g_strdup(group_tbl[0]);
+				g = charset_convert(group_tbl[0], "CP1250", "UTF-8");
 			}
 			g_strfreev(group_tbl);
 		}
 
 		buddy = purple_buddy_new(purple_connection_get_account(gc), name,
-				       strlen(show) ? show : NULL);
+					 strlen(show) ? show : NULL);
 
 		if (!(group = purple_find_group(g))) {
 			group = purple_group_new(g);
@@ -159,7 +166,6 @@ void ggp_buddylist_load(PurpleConnection
 	g_strfreev(users_tbl);
 
 	ggp_buddylist_send(gc);
-
 }
 /* }}} */
 
@@ -192,8 +198,7 @@ void ggp_buddylist_offline(PurpleConnect
 					continue;
 
 				purple_prpl_got_user_status(
-					purple_connection_get_account(gc),
-					buddy->name, "offline", NULL);
+					account, buddy->name, "offline", NULL);
 
 				purple_debug_info("gg",
 					"ggp_buddylist_offline: gone: %s\n",
============================================================
--- libpurple/protocols/msn/soap.c	b4246c343cc7a5051c673f14257ab0918a4db156
+++ libpurple/protocols/msn/soap.c	8a27072e32a3cb6052fcaafc1dcd0d1abb6b65d7
@@ -26,7 +26,7 @@
 #include "msn.h"
 #include "soap.h"
 
-
+#define MSN_SOAP_DEBUG
 /*local function prototype*/
 void msn_soap_set_process_step(MsnSoapConn *soapconn, MsnSoapStep step);
 
============================================================
--- pidgin/pidginstock.c	a1a460cffd8fa050434e5402f4800f561f2528c5
+++ pidgin/pidginstock.c	2c265aa9d5a211ec43e10e414febf9937bb03420
@@ -114,11 +114,11 @@ static struct SizedStockIcon {
 	{ PIDGIN_STOCK_STATUS_CHAT, 	"status", "chat.png",		TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
 	{ PIDGIN_STOCK_STATUS_INVISIBLE,"status", "invisible.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
 	{ PIDGIN_STOCK_STATUS_XA, 	"status", "extended-away.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, PIDGIN_STOCK_STATUS_XA_I },
-	{ PIDGIN_STOCK_STATUS_LOGIN, 	"status", "log-in.png",		FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
-	{ PIDGIN_STOCK_STATUS_LOGOUT, 	"status", "log-out.png",	FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
+	{ PIDGIN_STOCK_STATUS_LOGIN, 	"status", "log-in.png",		TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
+	{ PIDGIN_STOCK_STATUS_LOGOUT, 	"status", "log-out.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
 	{ PIDGIN_STOCK_STATUS_OFFLINE, 	"status", "offline.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_OFFLINE_I  },
 	{ PIDGIN_STOCK_STATUS_PERSON, 	"status", "person.png",		TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
-	{ PIDGIN_STOCK_STATUS_MESSAGE, 	"toolbar", "message-new.png",   FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_STATUS_MESSAGE, 	"toolbar", "message-new.png",   TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
 	
 	{ PIDGIN_STOCK_STATUS_IGNORED,	"emblems", "blocked.png",	FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
 	{ PIDGIN_STOCK_STATUS_FOUNDER,	"emblems", "founder.png",	FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
============================================================
--- pidgin/pixmaps/status/11/Makefile.am	9a19ff6d6fcc1bb1b406d6407a095322e30e8c8b
+++ pidgin/pixmaps/status/11/Makefile.am	206419b4c8fd3cec428f705dab89a09c27326636
@@ -6,6 +6,8 @@ EXTRA_DIST = 	available.png \
 		chat.png \
 		extended-away.png \
 		invisible.png \
+		log-in.png \
+		log-out.png \
 		offline.png \
 		person.png
 
============================================================
--- pidgin/pixmaps/toolbar/Makefile.am	497746a6a16a636054c83cdb0f459206aa1ad609
+++ pidgin/pixmaps/toolbar/Makefile.am	c5081b872303b49b303ca69d9ae94176f98e00e1
@@ -1,6 +1,11 @@ SUBDIRS = 16 22
 SUBDIRS = 16 22
 
+TINY_ICONS = 11/message-new.png
 EXTRA_DIST = \
 	Makefile.mingw \
 	16/Makefile.mingw \
+	22/Makefile.mingw \
+	$(TINY_ICONS)
+
+pidgintinytoolbarpixdir = $(datadir)/pixmaps/pidgin/toolbar/11
+pidgintinytoolbarpix_DATA = $(TINY_ICONS)
-	22/Makefile.mingw
============================================================
# pidgin/win32/nsis/pixmaps/pidgin-intro.bmp is binary
============================================================
--- share/ca-certs/Makefile.am	6fdd6599e29bf50e32832da473dbfea86f59cde8
+++ share/ca-certs/Makefile.am	d33109c71b83ea1f09f3df5b78fcbdb6ebe94232
@@ -1,7 +1,8 @@ cacerts_DATA =	\
 cacertsdir =	$(datadir)/purple/ca-certs
 cacerts_DATA =	\
 		Equifax_Secure_CA.pem \
 		GTE_CyberTrust_Global_Root.pem \
+		Microsoft_Secure_Server_Authority.pem \
 		Verisign_RSA_Secure_Server_CA.pem \
 		Verisign_Class3_Primary_CA.pem
 
-------------- next part --------------
#
#
# patch "finch/libgnt/gntmain.c"
#  from [681d2e87ecf9a093e70f4c6a7dba4c345a0a5e07]
#    to [7ddfbc8f64142c8b3f27e408710c3e096e961fdd]
#
============================================================
--- finch/libgnt/gntmain.c	681d2e87ecf9a093e70f4c6a7dba4c345a0a5e07
+++ finch/libgnt/gntmain.c	7ddfbc8f64142c8b3f27e408710c3e096e961fdd
@@ -223,6 +223,7 @@ io_invoke(GIOChannel *source, GIOConditi
 	char keys[256];
 	int rd;
 	char *k;
+	char *cvrt = NULL;
 
 	if (wm->mode == GNT_KP_MODE_WAIT_ON_CHILD)
 		return FALSE;
@@ -243,15 +244,16 @@ io_invoke(GIOChannel *source, GIOConditi
 		raise(SIGABRT);
 	}
 
-	gnt_wm_set_event_stack(wm, TRUE);
 	rd += HOLDING_ESCAPE;
+	if (HOLDING_ESCAPE)
+		keys[0] = '\033';
 	keys[rd] = 0;
-	if (mouse_enabled && detect_mouse_action(keys))
-		goto end;
+	gnt_wm_set_event_stack(wm, TRUE);
 
-	if (HOLDING_ESCAPE)
-		keys[0] = '\033';
-	k = keys;
+	cvrt = g_locale_to_utf8(keys, rd, (gsize*)&rd, NULL, NULL);
+	k = cvrt ? cvrt : keys;
+	if (mouse_enabled && detect_mouse_action(k))
+		goto end;
 
 #if 0
 	/* I am not sure what's happening here. If this actually does something,
@@ -290,6 +292,7 @@ end:
 	}
 end:
 	gnt_wm_set_event_stack(wm, FALSE);
+	g_free(cvrt);
 	return TRUE;
 }
 


More information about the Commits mailing list