--- a/libpurple/account.h Tue Sep 20 01:29:18 2022 -0500
+++ b/libpurple/account.h Tue Sep 20 01:31:47 2022 -0500
@@ -40,6 +40,7 @@
+#include "purpleconnectionerrorinfo.h" #include "purpleprotocol.h"
#include "purpleproxyinfo.h"
--- a/libpurple/connection.c Tue Sep 20 01:29:18 2022 -0500
+++ b/libpurple/connection.c Tue Sep 20 01:31:47 2022 -0500
@@ -101,10 +101,6 @@
static int connections_handle;
-static PurpleConnectionErrorInfo *
-purple_connection_error_info_new(PurpleConnectionError type,
- const gchar *description);
G_DEFINE_TYPE(PurpleConnection, purple_connection, G_TYPE_OBJECT)
/**************************************************************************
@@ -522,22 +518,6 @@
-static PurpleConnectionErrorInfo *
-purple_connection_error_info_new(PurpleConnectionError type,
- const gchar *description)
- PurpleConnectionErrorInfo *err;
- g_return_val_if_fail(description != NULL, NULL);
- err = g_new(PurpleConnectionErrorInfo, 1);
- err->description = g_strdup(description);
/**************************************************************************
**************************************************************************/
@@ -567,36 +547,6 @@
-static PurpleConnectionErrorInfo *
-purple_connection_error_info_copy(PurpleConnectionErrorInfo *err)
- g_return_val_if_fail(err != NULL, NULL);
- return purple_connection_error_info_new(err->type, err->description);
-purple_connection_error_info_free(PurpleConnectionErrorInfo *err) {
- g_return_if_fail(err != NULL);
- g_free(err->description);
-purple_connection_error_info_get_type(void) {
- type = g_boxed_type_register_static("PurpleConnectionErrorInfo",
- (GBoxedCopyFunc)purple_connection_error_info_copy,
- (GBoxedFreeFunc)purple_connection_error_info_free);
/**************************************************************************
**************************************************************************/
--- a/libpurple/connection.h Tue Sep 20 01:29:18 2022 -0500
+++ b/libpurple/connection.h Tue Sep 20 01:31:47 2022 -0500
@@ -34,9 +34,6 @@
#define PURPLE_TYPE_CONNECTION_UI_OPS (purple_connection_ui_ops_get_type())
typedef struct _PurpleConnectionUiOps PurpleConnectionUiOps;
-#define PURPLE_TYPE_CONNECTION_ERROR_INFO (purple_connection_error_info_get_type())
-typedef struct _PurpleConnectionErrorInfo PurpleConnectionErrorInfo;
/* This is meant to track use-after-free errors.
* TODO: it should be disabled in released code. */
#define PURPLE_ASSERT_CONNECTION_IS_VALID(gc) \
@@ -102,102 +99,10 @@
#define PURPLE_CONNECTION_ERROR (g_quark_from_static_string("purple-connection-error"))
- * PurpleConnectionError:
- * @PURPLE_CONNECTION_ERROR_NETWORK_ERROR: There was an error sending or
- * receiving on the network socket, or there was some protocol error
- * (such as the server sending malformed data).
- * @PURPLE_CONNECTION_ERROR_INVALID_USERNAME: The username supplied was not
- * @PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED: The username, password or
- * some other credential was incorrect. Use
- * #PURPLE_CONNECTION_ERROR_INVALID_USERNAME instead if the username
- * is known to be invalid.
- * @PURPLE_CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE: libpurple doesn't speak
- * any of the authentication methods the server offered.
- * @PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT: libpurple was built without SSL
- * support, and the connection needs SSL.
- * @PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR: There was an error negotiating
- * SSL on this connection, or the server does not support encryption
- * but an account option was set to require it.
- * @PURPLE_CONNECTION_ERROR_NAME_IN_USE: Someone is already connected to the
- * server using the name you are trying to connect with.
- * @PURPLE_CONNECTION_ERROR_INVALID_SETTINGS: The username/server/other
- * preference for the account isn't valid. For instance, on IRC the
- * username cannot contain white space. This reason should not be used
- * for incorrect passwords etc: use
- * #PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED for that.
- * @PURPLE_CONNECTION_ERROR_CERT_NOT_PROVIDED: The server did not provide a
- * @PURPLE_CONNECTION_ERROR_CERT_UNTRUSTED: The server's SSL certificate could
- * @PURPLE_CONNECTION_ERROR_CERT_EXPIRED: The server's SSL certificate has
- * @PURPLE_CONNECTION_ERROR_CERT_NOT_ACTIVATED: The server's SSL certificate is
- * @PURPLE_CONNECTION_ERROR_CERT_HOSTNAME_MISMATCH: The server's SSL
- * certificate did not match its hostname.
- * @PURPLE_CONNECTION_ERROR_CERT_FINGERPRINT_MISMATCH: The server's SSL
- * certificate does not have the expected fingerprint.
- * @PURPLE_CONNECTION_ERROR_CERT_SELF_SIGNED: The server's SSL certificate is
- * @PURPLE_CONNECTION_ERROR_CERT_OTHER_ERROR: There was some other error
- * validating the server's SSL certificate.
- * @PURPLE_CONNECTION_ERROR_OTHER_ERROR: Some other error occurred which fits
- * into none of the other categories.
- * Possible errors that can cause a connection to be closed.
- PURPLE_CONNECTION_ERROR_NETWORK_ERROR = 0,
- PURPLE_CONNECTION_ERROR_INVALID_USERNAME = 1,
- PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED = 2,
- PURPLE_CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE = 3,
- PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT = 4,
- PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR = 5,
- PURPLE_CONNECTION_ERROR_NAME_IN_USE = 6,
- /* TODO This reason really shouldn't be necessary. Usernames and
- * other account preferences should be validated when the
- * account is created. */
- PURPLE_CONNECTION_ERROR_INVALID_SETTINGS = 7,
- PURPLE_CONNECTION_ERROR_CERT_NOT_PROVIDED = 8,
- PURPLE_CONNECTION_ERROR_CERT_UNTRUSTED = 9,
- PURPLE_CONNECTION_ERROR_CERT_EXPIRED = 10,
- PURPLE_CONNECTION_ERROR_CERT_NOT_ACTIVATED = 11,
- PURPLE_CONNECTION_ERROR_CERT_HOSTNAME_MISMATCH = 12,
- PURPLE_CONNECTION_ERROR_CERT_FINGERPRINT_MISMATCH = 13,
- PURPLE_CONNECTION_ERROR_CERT_SELF_SIGNED = 14,
- PURPLE_CONNECTION_ERROR_CERT_OTHER_ERROR = 15,
- PURPLE_CONNECTION_ERROR_CUSTOM_TEMPORARY = 16,
- PURPLE_CONNECTION_ERROR_CUSTOM_FATAL = 17,
- /* purple_connection_error() in connection.c uses the fact that
- * this is the last member of the enum when sanity-checking; if other
- * reasons are added after it, the check must be updated.
- PURPLE_CONNECTION_ERROR_OTHER_ERROR = 18
-} PurpleConnectionError;
- * PurpleConnectionErrorInfo:
- * @type: The type of error.
- * @description: A localised, human-readable description of the error.
- * Holds the type of an error along with its description.
-struct _PurpleConnectionErrorInfo
- PurpleConnectionError type;
+#include "purpleconnectionerrorinfo.h" #include "purpleprotocol.h"
@@ -277,13 +182,6 @@
G_DECLARE_FINAL_TYPE(PurpleConnection, purple_connection, PURPLE, CONNECTION, GObject)
- * purple_connection_error_info_get_type:
- * Returns: The #GType for the #PurpleConnectionErrorInfo boxed structure.
-GType purple_connection_error_info_get_type(void);
* purple_connection_set_state:
* @state: The connection state.
--- a/libpurple/meson.build Tue Sep 20 01:29:18 2022 -0500
+++ b/libpurple/meson.build Tue Sep 20 01:31:47 2022 -0500
@@ -44,6 +44,7 @@
'purplechatconversation.c',
+ 'purpleconnectionerrorinfo.c', 'purpleconversationmanager.c',
'purpleconversationuiops.c',
@@ -144,6 +145,7 @@
'purplechatconversation.h',
+ 'purpleconnectionerrorinfo.h', 'purpleconversationmanager.h',
'purpleconversationuiops.h',
@@ -251,6 +253,7 @@
+ 'purpleconnectionerrorinfo.h', 'purpleimconversation.h',
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/purpleconnectionerrorinfo.c Tue Sep 20 01:31:47 2022 -0500
@@ -0,0 +1,58 @@
+ * Purple - Internet Messaging Library + * Copyright (C) Pidgin Developers <devel@pidgin.im> + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * This library 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 + * Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see <https://www.gnu.org/licenses/>. +#include "purpleconnectionerrorinfo.h" +G_DEFINE_BOXED_TYPE(PurpleConnectionErrorInfo, purple_connection_error_info, + purple_connection_error_info_copy, + purple_connection_error_info_free) +/****************************************************************************** + *****************************************************************************/ +PurpleConnectionErrorInfo * +purple_connection_error_info_new(PurpleConnectionError type, + const gchar *description) + PurpleConnectionErrorInfo *info; + g_return_val_if_fail(description != NULL, NULL); + info = g_new(PurpleConnectionErrorInfo, 1); + info->description = g_strdup(description); +PurpleConnectionErrorInfo * +purple_connection_error_info_copy(PurpleConnectionErrorInfo *info) + g_return_val_if_fail(info != NULL, NULL); + return purple_connection_error_info_new(info->type, info->description); +purple_connection_error_info_free(PurpleConnectionErrorInfo *info) { + g_return_if_fail(info != NULL); + g_free(info->description); --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/purpleconnectionerrorinfo.h Tue Sep 20 01:31:47 2022 -0500
@@ -0,0 +1,165 @@
+ * Purple - Internet Messaging Library + * Copyright (C) Pidgin Developers <devel@pidgin.im> + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * This library 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 + * Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see <https://www.gnu.org/licenses/>. +#if !defined(PURPLE_GLOBAL_HEADER_INSIDE) && !defined(PURPLE_COMPILATION) +# error "only <purple.h> may be included directly" +#ifndef PURPLE_CONNECTION_ERROR_INFO_H +#define PURPLE_CONNECTION_ERROR_INFO_H +#include <glib-object.h> + * PurpleConnectionError: + * @PURPLE_CONNECTION_ERROR_NETWORK_ERROR: There was an error sending or + * receiving on the network socket, or there was some protocol error + * (such as the server sending malformed data). + * @PURPLE_CONNECTION_ERROR_INVALID_USERNAME: The username supplied was not + * @PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED: The username, password or + * some other credential was incorrect. Use + * #PURPLE_CONNECTION_ERROR_INVALID_USERNAME instead if the username + * is known to be invalid. + * @PURPLE_CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE: libpurple doesn't speak + * any of the authentication methods the server offered. + * @PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT: libpurple was built without SSL + * support, and the connection needs SSL. + * @PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR: There was an error negotiating + * SSL on this connection, or the server does not support encryption + * but an account option was set to require it. + * @PURPLE_CONNECTION_ERROR_NAME_IN_USE: Someone is already connected to the + * server using the name you are trying to connect with. + * @PURPLE_CONNECTION_ERROR_INVALID_SETTINGS: The username/server/other + * preference for the account isn't valid. For instance, on IRC the + * username cannot contain white space. This reason should not be used + * for incorrect passwords etc: use + * #PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED for that. + * @PURPLE_CONNECTION_ERROR_CERT_NOT_PROVIDED: The server did not provide a + * @PURPLE_CONNECTION_ERROR_CERT_UNTRUSTED: The server's SSL certificate could + * @PURPLE_CONNECTION_ERROR_CERT_EXPIRED: The server's SSL certificate has + * @PURPLE_CONNECTION_ERROR_CERT_NOT_ACTIVATED: The server's SSL certificate is + * @PURPLE_CONNECTION_ERROR_CERT_HOSTNAME_MISMATCH: The server's SSL + * certificate did not match its hostname. + * @PURPLE_CONNECTION_ERROR_CERT_FINGERPRINT_MISMATCH: The server's SSL + * certificate does not have the expected fingerprint. + * @PURPLE_CONNECTION_ERROR_CERT_SELF_SIGNED: The server's SSL certificate is + * @PURPLE_CONNECTION_ERROR_CERT_OTHER_ERROR: There was some other error + * validating the server's SSL certificate. + * @PURPLE_CONNECTION_ERROR_OTHER_ERROR: Some other error occurred which fits + * into none of the other categories. + * Possible errors that can cause a connection to be closed. + PURPLE_CONNECTION_ERROR_NETWORK_ERROR = 0, + PURPLE_CONNECTION_ERROR_INVALID_USERNAME = 1, + PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED = 2, + PURPLE_CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE = 3, + PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT = 4, + PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR = 5, + PURPLE_CONNECTION_ERROR_NAME_IN_USE = 6, + /* TODO This reason really shouldn't be necessary. Usernames and + * other account preferences should be validated when the + * account is created. */ + PURPLE_CONNECTION_ERROR_INVALID_SETTINGS = 7, + PURPLE_CONNECTION_ERROR_CERT_NOT_PROVIDED = 8, + PURPLE_CONNECTION_ERROR_CERT_UNTRUSTED = 9, + PURPLE_CONNECTION_ERROR_CERT_EXPIRED = 10, + PURPLE_CONNECTION_ERROR_CERT_NOT_ACTIVATED = 11, + PURPLE_CONNECTION_ERROR_CERT_HOSTNAME_MISMATCH = 12, + PURPLE_CONNECTION_ERROR_CERT_FINGERPRINT_MISMATCH = 13, + PURPLE_CONNECTION_ERROR_CERT_SELF_SIGNED = 14, + PURPLE_CONNECTION_ERROR_CERT_OTHER_ERROR = 15, + PURPLE_CONNECTION_ERROR_CUSTOM_TEMPORARY = 16, + PURPLE_CONNECTION_ERROR_CUSTOM_FATAL = 17, + /* purple_connection_error() in connection.c uses the fact that + * this is the last member of the enum when sanity-checking; if other + * reasons are added after it, the check must be updated. + PURPLE_CONNECTION_ERROR_OTHER_ERROR = 18 +} PurpleConnectionError; + * PurpleConnectionErrorInfo: + * @type: The type of error. + * @description: A localised, human-readable description of the error. + * Holds the type of an error along with its description. + PurpleConnectionError type; +} PurpleConnectionErrorInfo; +#define PURPLE_TYPE_CONNECTION_ERROR_INFO (purple_connection_error_info_get_type()) +GType purple_connection_error_info_get_type(void); + * purple_connection_error_info_new: + * @type: The [enum@Purple.ConnectionError] of the error. + * @description: The description of the error. + * Creates a new error info with the given properties. + * Returns: (transfer full): The new instance. +PurpleConnectionErrorInfo *purple_connection_error_info_new(PurpleConnectionError type, const gchar *description); + * purple_connection_error_info_copy: + * @info: The instance to copy. + * Creates a copy of @info. + * Returns: (transfer full): A new copy of @info. +PurpleConnectionErrorInfo *purple_connection_error_info_copy(PurpleConnectionErrorInfo *info); + * purple_connection_error_info_free: + * @info: The instance to free. + * Frees the memory associated with @info. +void purple_connection_error_info_free(PurpleConnectionErrorInfo *info); +#endif /* PURPLE_CONNECTION_ERROR_INFO_H */