--- a/libpurple/connection.c Tue May 20 10:59:21 2014 +0530 +++ b/libpurple/connection.c Sat May 24 02:32:01 2014 +0530 @@ -308,6 +308,16 @@ return priv->flags; } +gboolean +purple_connection_is_disconnecting(const PurpleConnection *gc) +{ + PurpleConnectionPrivate *priv = PURPLE_CONNECTION_GET_PRIVATE(gc); + + g_return_val_if_fail(priv != NULL, TRUE); + + return priv->is_finalizing; +} + PurpleAccount * purple_connection_get_account(const PurpleConnection *gc) { @@ -787,6 +797,7 @@ } purple_http_conn_cancel_all(gc); + _purple_socket_cancel_with_connection(gc); purple_proxy_connect_cancel_with_handle(gc); connections = g_list_remove(connections, gc); @@ -1025,6 +1036,19 @@ /************************************************************************** * Connections API **************************************************************************/ + +void +_purple_assert_connection_is_valid(PurpleConnection *gc, + const gchar *file, int line) +{ + if (gc && g_list_find(purple_connections_get_all(), gc)) + return; + + purple_debug_fatal("connection", "PURPLE_ASSERT_CONNECTION_IS_VALID(%p)" + " failed at %s:%d", gc, file, line); + exit(-1); +} + void purple_connections_disconnect_all(void) {