diff -r c67c45d70006 -r 36684da1e60d libpurple/purpleprotocol.c --- a/libpurple/purpleprotocol.c Fri Nov 04 02:32:53 2022 -0500 +++ b/libpurple/purpleprotocol.c Fri Nov 04 04:00:14 2022 -0500 @@ -567,6 +567,41 @@ } } +void +purple_protocol_can_connect_async(PurpleProtocol *protocol, + PurpleAccount *account, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer data) +{ + PurpleProtocolClass *klass = NULL; + + g_return_if_fail(PURPLE_IS_PROTOCOL(protocol)); + g_return_if_fail(PURPLE_IS_ACCOUNT(account)); + + klass = PURPLE_PROTOCOL_GET_CLASS(protocol); + if(klass != NULL && klass->can_connect_async != NULL) { + klass->can_connect_async(protocol, account, cancellable, callback, + data); + } +} + +gboolean +purple_protocol_can_connect_finish(PurpleProtocol *protocol, + GAsyncResult *result, + GError **error) +{ + PurpleProtocolClass *klass = NULL; + + g_return_val_if_fail(PURPLE_IS_PROTOCOL(protocol), FALSE); + + klass = PURPLE_PROTOCOL_GET_CLASS(protocol); + if(klass != NULL && klass->can_connect_finish != NULL) { + return klass->can_connect_finish(protocol, result, error); + } + + return FALSE; +} PurpleConnection * purple_protocol_create_connection(PurpleProtocol *protocol,