diff --git a/pidgin-2.14.5.tar.bz2 b/pidgin-2.14.5.tar.bz2
deleted file mode 100644
index 9a20172..0000000
--- a/pidgin-2.14.5.tar.bz2
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:26db80d2a3c1e740952757bd53c15b8fc8dd780dc8819a74b53b2ef3bfaf041f
-size 8696780
diff --git a/pidgin-2.14.5.tar.bz2.asc b/pidgin-2.14.5.tar.bz2.asc
deleted file mode 100644
index 68b539a..0000000
--- a/pidgin-2.14.5.tar.bz2.asc
+++ /dev/null
@@ -1,16 +0,0 @@
------BEGIN PGP SIGNATURE-----
-
-iQIzBAABCgAdFiEEQN4dxyiP4/UKuTjFSPZq/9m9tykFAmC5iMEACgkQSPZq/9m9
-tylBRg//QKCKyBSWr9wHvir7fEsh8VmobmEOuvrB9P0NpNAmag5rJ4SGze0tb9y3
-EN0W4lAdkqY8WVjRYxK5eI/wMspY2jkcxR5LfS7ELonChJZiVRB8476Ewas9M1wA
-BpWKf+kcxgxwu6slGenBMpJcWkq6gCWqYkmDVFv7gGW4aA6f9E5RpEXbd0rRt3qt
-+GKWwbtMeDOmJ+P21FWSqqhc5DzNawky2bMRRfA2q/M+AK0uECyh56eEcaStm05d
-l12ZyCtaq25nWmkO4W0YG6/BRjfeba8eDlPmScl1PMsgbZtYkVv0dO3gy8o0Erdv
-zHi+87iOobnB3aqiFV6QGaVBbnUHEa/92jn4EwEOPTe+yHr8HxH6J62H/mRDi2hl
-1DI2ZKdZMg9qI4/yRTkPypA6HHtlQuJZ4bN1O5q8pi+vYnzZ/9fOcqGVW9Pdv8S9
-YQZxqzQL8htPBHosHqX/JAJE3DdupvVJceF6DF/m8GkIv7pe+LF3h3h9uJJjagy2
-rSU47m8ZYozmj62RJ27YaVaf7rIHFeXQqr9tfyEzrdbQklIPPfTFK319jAgxGxFD
-kiV2ymNbnPVh1apXGs+58k5kgcdx61bfMqXBhmo38tteX+/OtSB/czfvkEXpoaXb
-TwHsU+fzPVSnCdp7iE/R7cyanUqZIWE37msjoMj0g23BKbmxkww=
-=QWEa
------END PGP SIGNATURE-----
diff --git a/pidgin-2.14.6.tar.bz2 b/pidgin-2.14.6.tar.bz2
new file mode 100644
index 0000000..308848c
--- /dev/null
+++ b/pidgin-2.14.6.tar.bz2
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bb45f7c032f9efd6922a5dbf2840995775e5584771b23992d04f6eff7dff5336
+size 8672222
diff --git a/pidgin-2.14.6.tar.bz2.asc b/pidgin-2.14.6.tar.bz2.asc
new file mode 100644
index 0000000..5362bd5
--- /dev/null
+++ b/pidgin-2.14.6.tar.bz2.asc
@@ -0,0 +1,16 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQIzBAABCgAdFiEEQN4dxyiP4/UKuTjFSPZq/9m9tykFAmDnvCMACgkQSPZq/9m9
+tymcDg//QjWSPjUBlMEdWOANl0E4GSkyH5G3d6BpJujR3HdDS0IrLm5RXeyR//q4
+Nrgi9qT9TyZ+jmm8f55XxI7gBBL5CFev1o8Q+QnHVftDal29jAki5NzbYuTsjHJc
+REH0KnJLSPtVrZyoy7BKSURUfnr1p4UZa54ahLhvCTcaPjghGw4lQh8SvB+eXkhD
+YoH5l+r+bJdVQx2e4GGOHH5zYO/LH2EGYb6dBQWH/ogdomn9IC82K4g3QNc0dYmj
+K4OO2Oq8hPhM0Yp3X/DjrpKOQmmVAX1Zo+akdz1WgIbHPuudrVLalNZTmKXFpZk1
+EmXAQZ6igdTFUdgsz+L9rlaGG0vBI839XsZbtC4Ev3MiIqJbogR+/CYeJ4i+4jrc
+Zr3SmEuizb2fUSZVL/siQSUwvl7EhWawJSY3r36YfoaI335ZPqEZMXswLnRCwrh5
+0zWQEd/8W/rdy+ss5myYubNOP9JSptJN/94drOK7V+KKfvZGB1qKjGqCt90mjMXW
+2R2L9KNokWD+38sHxlQ2yyzcIT/LWkNnpWx++FUvx+Z3AygXO8KQ29/8YFZH3rJi
+NbZKFIASKSN9qXdzn/+ONl4MEAtR+V8DCR0kn1l2rydTjyNRsMR4ewSx+CZ9QK8B
+VRxOt9NQKOPeebqlSdXH5CM6LHNwEv82TRrogtx9JvYuJelJPQE=
+=U/1t
+-----END PGP SIGNATURE-----
diff --git a/pidgin-add-no_proxy-support.patch b/pidgin-add-no_proxy-support.patch
deleted file mode 100644
index 304e343..0000000
--- a/pidgin-add-no_proxy-support.patch
+++ /dev/null
@@ -1,305 +0,0 @@
-diff --unified --recursive --text --new-file --color pidgin-2.14.5.old/ChangeLog pidgin-2.14.5.new/ChangeLog
---- pidgin-2.14.5.old/ChangeLog 2021-06-24 14:17:08.444727946 +0800
-+++ pidgin-2.14.5.new/ChangeLog 2021-06-24 14:17:17.098045115 +0800
-@@ -103,6 +103,10 @@
- Bonjour:
- * Always use port fallback for IPv4 addresses. (PR #382 Michael Osborne)
-
-+ libpurple:
-+ * added support for the no_proxy environment variable. (PIDGIN-17518)
-+ (RR #667) (Alynx Zhou and Gary Kramlich)
-+
- XMPP:
- * Support for XEP-0198 Stream Management (PR #309 defanor)
- * Decrease delay for file transfer using streamhosts (PR #464 #627 Evert
-diff --unified --recursive --text --new-file --color pidgin-2.14.5.old/COPYRIGHT pidgin-2.14.5.new/COPYRIGHT
---- pidgin-2.14.5.old/COPYRIGHT 2021-06-24 14:17:08.438061292 +0800
-+++ pidgin-2.14.5.new/COPYRIGHT 2021-06-24 14:17:17.098045115 +0800
-@@ -651,6 +651,7 @@
- Jan Zachorowski
- zelch
- Nickolai Zeldovich
-+Alynx Zhou
- Tom Zickel
- Marco Ziech
- Piotr Zielinski
-diff --unified --recursive --text --new-file --color pidgin-2.14.5.old/libpurple/proxy.c pidgin-2.14.5.new/libpurple/proxy.c
---- pidgin-2.14.5.old/libpurple/proxy.c 2021-06-24 14:17:08.454727928 +0800
-+++ pidgin-2.14.5.new/libpurple/proxy.c 2021-06-24 14:17:17.098045115 +0800
-@@ -90,6 +90,12 @@
-
- static PurpleProxyInfo *global_proxy_info = NULL;
-
-+typedef struct {
-+ gchar *hostname;
-+ gint port;
-+} PurpleProxyNoProxyEntry;
-+static GList *no_proxy_entries = NULL;
-+
- static GSList *handles = NULL;
-
- static void try_connect(PurpleProxyConnectData *connect_data);
-@@ -205,6 +211,118 @@
- }
-
- /**************************************************************************
-+ * no proxy helpers
-+ **************************************************************************/
-+static PurpleProxyNoProxyEntry *
-+purple_proxy_no_proxy_entry_new(const gchar *hostname, gint port) {
-+ PurpleProxyNoProxyEntry *entry = NULL;
-+
-+ entry = g_new(PurpleProxyNoProxyEntry, 1);
-+ entry->hostname = g_strdup(hostname);
-+ entry->port = port;
-+
-+ return entry;
-+}
-+
-+static void
-+purple_proxy_no_proxy_entry_free(PurpleProxyNoProxyEntry *entry) {
-+ g_free(entry->hostname);
-+ g_free(entry);
-+}
-+
-+static gint
-+purple_proxy_no_proxy_compare(gconstpointer a, gconstpointer b) {
-+ const PurpleProxyNoProxyEntry *entry, *connection;
-+
-+ entry = (const PurpleProxyNoProxyEntry *)a;
-+ connection = (const PurpleProxyNoProxyEntry *)b;
-+
-+ /* check port first as it's quicker */
-+ if(entry->port != 0 && entry->port != connection->port) {
-+ return -1;
-+ }
-+
-+ /* * is used to match any host, but this check needs to be after the port
-+ * because *:6667 is a valid entry.
-+ */
-+ if(purple_strequal(entry->hostname, "*")) {
-+ return 0;
-+ }
-+
-+ /* if the host name matches, don't proxy it */
-+ if(purple_strequal(connection->hostname, entry->hostname)) {
-+ return 0;
-+ }
-+
-+ /* finally check if the requested host has a known suffix */
-+ if(g_str_has_suffix(connection->hostname, entry->hostname)) {
-+ size_t clen = strlen(connection->hostname);
-+ size_t elen = strlen(entry->hostname);
-+
-+ /* make sure the connection hostname has at least one more character
-+ * than the entry so that we don't do an out of bound read.
-+ */
-+ if(clen > elen) {
-+ if(connection->hostname[clen - elen - 1] == '.') {
-+ return 0;
-+ }
-+ }
-+ }
-+
-+ return -1;
-+}
-+
-+static void
-+parse_no_proxy_list(const gchar *no_proxy) {
-+ gchar **items;
-+ gint i;
-+
-+ g_return_if_fail(no_proxy != NULL);
-+ g_return_if_fail(no_proxy_entries == NULL);
-+
-+ /* The no_proxy value is comma separated */
-+ items = g_strsplit(no_proxy, ",", -1);
-+
-+ for(i = 0; items[i] != NULL; i++) {
-+ PurpleProxyNoProxyEntry *entry = NULL;
-+ gchar *hostname = NULL;
-+ gchar *s_port = NULL;
-+ gint port = 0;
-+
-+ s_port = g_strstr_len(items[i], -1, ":");
-+ if(s_port != NULL && *s_port + 1 != '\0') {
-+ /* read the port starting with the next character */
-+ port = atoi(s_port + 1);
-+
-+ /* since we're done with the port, now turn item into a null
-+ * terminated string of just the hostname.
-+ */
-+ *s_port = '\0';
-+ }
-+
-+ /* items[i] is currently either the original or with :port removed */
-+ hostname = items[i];
-+
-+ g_strstrip(hostname);
-+
-+ /* finally remove any leading .'s from hostname */
-+ while(hostname[0] == '.') {
-+ hostname += 1;
-+ }
-+
-+ if(*hostname == '\0') {
-+ continue;
-+ }
-+
-+ /* finally add the new entry to the list */
-+ entry = purple_proxy_no_proxy_entry_new(hostname, port);
-+ no_proxy_entries = g_list_prepend(no_proxy_entries, entry);
-+ }
-+
-+ g_strfreev(items);
-+}
-+
-+/**************************************************************************
- * Global Proxy API
- **************************************************************************/
- PurpleProxyInfo *
-@@ -2312,6 +2430,8 @@
- const char *connecthost = host;
- int connectport = port;
- PurpleProxyConnectData *connect_data;
-+ PurpleProxyNoProxyEntry entry;
-+ GList *found = NULL;
-
- g_return_val_if_fail(host != NULL, NULL);
- g_return_val_if_fail(port > 0, NULL);
-@@ -2325,9 +2445,31 @@
- connect_data->data = data;
- connect_data->host = g_strdup(host);
- connect_data->port = port;
-- connect_data->gpi = purple_proxy_get_setup(account);
- connect_data->account = account;
-
-+ /* Check if the hostname:port matches anything in the no_proxy environment
-+ * variable to determine if this connection should be proxied or not.
-+ */
-+ entry.hostname = connect_data->host;
-+ entry.port = connect_data->port;
-+ found = g_list_find_custom(no_proxy_entries, &entry,
-+ purple_proxy_no_proxy_compare);
-+
-+ if(found != NULL) {
-+ purple_debug_info(
-+ "proxy",
-+ "directly connecting to %s:%d because it matched the no_proxy "
-+ "environment variable.\n",
-+ connect_data->host,
-+ connect_data->port
-+ );
-+
-+ connect_data->gpi = purple_proxy_info_new();
-+ purple_proxy_info_set_type(connect_data->gpi, PURPLE_PROXY_NONE);
-+ } else {
-+ connect_data->gpi = purple_proxy_get_setup(account);
-+ }
-+
- if ((purple_proxy_info_get_type(connect_data->gpi) != PURPLE_PROXY_NONE) &&
- (purple_proxy_info_get_host(connect_data->gpi) == NULL ||
- purple_proxy_info_get_port(connect_data->gpi) <= 0)) {
-@@ -2380,6 +2522,8 @@
- const char *connecthost = host;
- int connectport = port;
- PurpleProxyConnectData *connect_data;
-+ PurpleProxyNoProxyEntry entry;
-+ GList *found;
-
- g_return_val_if_fail(host != NULL, NULL);
- g_return_val_if_fail(port > 0, NULL);
-@@ -2393,9 +2537,27 @@
- connect_data->data = data;
- connect_data->host = g_strdup(host);
- connect_data->port = port;
-- connect_data->gpi = purple_proxy_get_setup(account);
- connect_data->account = account;
-
-+ entry.hostname = connect_data->host;
-+ entry.port = connect_data->port;
-+ found = g_list_find_custom(no_proxy_entries, &entry,
-+ purple_proxy_no_proxy_compare);
-+ if(found != NULL) {
-+ purple_debug_info(
-+ "proxy",
-+ "directly connecting to %s:%d because it matched the no_proxy "
-+ "environment variable.\n",
-+ connect_data->host,
-+ connect_data->port
-+ );
-+
-+ connect_data->gpi = purple_proxy_info_new();
-+ purple_proxy_info_set_type(connect_data->gpi, PURPLE_PROXY_NONE);
-+ } else {
-+ connect_data->gpi = purple_proxy_get_setup(account);
-+ }
-+
- if ((purple_proxy_info_get_type(connect_data->gpi) != PURPLE_PROXY_NONE) &&
- (purple_proxy_info_get_host(connect_data->gpi) == NULL ||
- purple_proxy_info_get_port(connect_data->gpi) <= 0)) {
-@@ -2613,6 +2775,55 @@
- purple_proxy_init(void)
- {
- void *handle;
-+ const gchar *no_proxy_value = NULL;
-+
-+ /*
-+ * See Standardizing no_proxy in for this patch.
-+ */
-+ no_proxy_value = g_getenv("no_proxy");
-+ if(no_proxy_value == NULL) {
-+ no_proxy_value = g_getenv("NO_PROXY");
-+ }
-+
-+ if(no_proxy_value != NULL) {
-+ /*
-+ * Some test cases (when we are connecting to libera with SOCKS5 on port
-+ * 6667):
-+ *
-+ * Use proxy because empty list.
-+ * $ no_proxy= pidgin --debug
-+ *
-+ * Ignore the leading ., match suffix and skip proxy.
-+ * $ no_proxy=.libera.chat:6667 pidgin --debug
-+ *
-+ * Treat empty port as unspecified and skip proxy.
-+ * $ no_proxy=libera.chat: pidgin --debug
-+ *
-+ * Ignore the first empty element and skip proxy.
-+ * $ no_proxy=,libera.chat:6667 pidgin --debug
-+ *
-+ * Should not work with empty host, if you want to skip proxy for
-+ * all hosts with a specific port please see next example.
-+ * $ no_proxy=:6667 pidgin --debug
-+ *
-+ * Should skip proxy.
-+ * $ no_proxy="*:6667" pidgin --debug
-+ *
-+ * Should NOT skip proxy.
-+ * $ no_proxy="*:6669" pidgin --debug
-+ *
-+ * Should skip proxy.
-+ * $ no_proxy="*" pidgin --debug
-+ */
-+
-+ parse_no_proxy_list(no_proxy_value);
-+
-+ purple_debug_info("proxy",
-+ "Found no_proxy envrionment variable ('%s')\n",
-+ no_proxy_value);
-+ purple_debug_info("proxy", "Loaded %d no_proxy exceptions\n",
-+ g_list_length(no_proxy_entries));
-+ }
-
- /* Initialize a default proxy info struct. */
- global_proxy_info = purple_proxy_info_new();
-@@ -2660,4 +2871,8 @@
-
- purple_proxy_info_destroy(global_proxy_info);
- global_proxy_info = NULL;
-+
-+ g_list_free_full(no_proxy_entries,
-+ (GDestroyNotify)purple_proxy_no_proxy_entry_free);
-+ no_proxy_entries = NULL;
- }
diff --git a/pidgin.changes b/pidgin.changes
index aa9625e..ab51e63 100644
--- a/pidgin.changes
+++ b/pidgin.changes
@@ -1,3 +1,24 @@
+-------------------------------------------------------------------
+Fri Jul 9 07:40:54 UTC 2021 - Paolo Stivanin
+
+- Update to 2.14.6:
+ General:
+ * Update references to point to our current websites.
+ * Add a donate link to the help menu.
+ Finch:
+ * Check pkg-config for ncurses before looking for it manually.
+ Pidgin:
+ * Replace newlines in topics with spaces.
+ libpurple:
+ * Added support for the no_proxy environment variable.
+ * Added infrastructure for fuzzing as well as some initial fuzzers.
+ * Fix an out of bounds write in purple_markup_linkify.
+ XMPP:
+ * Enable session management after binding a resource.
+ Zephyr:
+ * Fix a clang logical-not-parentheses warning.
+- Drop pidgin-add-no_proxy-support.patch
+
-------------------------------------------------------------------
Thu Jun 24 06:24:45 UTC 2021 - Alynx Zhou
diff --git a/pidgin.spec b/pidgin.spec
index 8e7f131..ae4b482 100644
--- a/pidgin.spec
+++ b/pidgin.spec
@@ -18,7 +18,7 @@
%define _name Pidgin
Name: pidgin
-Version: 2.14.5
+Version: 2.14.6
Release: 0
Summary: Multiprotocol Instant Messaging Client
License: GPL-2.0-only
@@ -38,8 +38,6 @@ Patch2: pidgin-fix-perl-build.patch
Patch3: pidgin-use-default-alsa.patch
# PATCH-FIX-OPENSUSE pidgin-always-enable-intltool.patch mgorse@suse.com -- always enable intltool, needed for autoconf 2.71.
Patch4: pidgin-always-enable-intltool.patch
-# PATCH-FEATURE-UPSTREAM pidgin-add-no_proxy-support.patch jsc#SLE-17111 pidgin.im#17518 alynx.zhou@suse.com -- add support for no_proxy env.
-Patch5: pidgin-add-no_proxy-support.patch
BuildRequires: ca-certificates-mozilla
BuildRequires: doxygen
BuildRequires: fdupes
@@ -224,7 +222,6 @@ translation-update-upstream
%patch3 -p1
%endif
%patch4 -p1
-%patch5 -p1
cp -f %{SOURCE3} %{name}-prefs.xml