--- a/libpurple/protocols/jabber/adhoccommands.c Thu Oct 06 23:56:19 2022 -0500
+++ b/libpurple/protocols/jabber/adhoccommands.c Fri Oct 07 01:21:28 2022 -0500
@@ -30,6 +30,8 @@
+static void jabber_adhoc_execute(JabberStream *js, JabberAdHocCommands *cmd); jabber_adhoc_commands_free(JabberAdHocCommands *cmd)
@@ -299,7 +301,8 @@
-void jabber_adhoc_execute(JabberStream *js, JabberAdHocCommands *cmd) {
+jabber_adhoc_execute(JabberStream *js, JabberAdHocCommands *cmd) { JabberIq *iq = jabber_iq_new(js, JABBER_IQ_SET);
PurpleXmlNode *command = purple_xmlnode_new_child(iq->node,"command");
purple_xmlnode_set_attrib(iq->node,"to",cmd->jid);
--- a/libpurple/protocols/jabber/adhoccommands.h Thu Oct 06 23:56:19 2022 -0500
+++ b/libpurple/protocols/jabber/adhoccommands.h Fri Oct 07 01:21:28 2022 -0500
@@ -40,8 +40,6 @@
JabberIqType type, const char *id,
PurpleXmlNode *packet, gpointer data);
-void jabber_adhoc_execute(JabberStream *js, JabberAdHocCommands *cmd);
void jabber_adhoc_execute_action(PurpleBlistNode *node, gpointer data);
void jabber_adhoc_got_list(JabberStream *js, const char *from, PurpleXmlNode *query);
--- a/libpurple/protocols/jabber/buddy.h Thu Oct 06 23:56:19 2022 -0500
+++ b/libpurple/protocols/jabber/buddy.h Fri Oct 07 01:21:28 2022 -0500
@@ -99,7 +99,6 @@
void jabber_setup_set_info(GSimpleAction *action, GVariant *parameter, gpointer data);
void jabber_set_buddy_icon(PurpleProtocolServer *protocol_server, PurpleConnection *gc, PurpleImage *img);
-void jabber_user_search(JabberStream *js, const char *directory);
void jabber_user_search_begin(GSimpleAction *action, GVariant *parameter, gpointer data);
void jabber_buddy_remove_all_pending_buddy_info_requests(JabberStream *js);
@@ -109,7 +108,6 @@
gboolean jabber_resource_know_capabilities(const JabberBuddyResource *jbr);
gboolean jabber_resource_has_capability(const JabberBuddyResource *jbr,
-gboolean jabber_buddy_has_capability(const JabberBuddy *jb, const gchar *cap);
jabber_resource_get_identity_category_type(const JabberBuddyResource *jbr,
--- a/libpurple/protocols/jabber/chat.h Thu Oct 06 23:56:19 2022 -0500
+++ b/libpurple/protocols/jabber/chat.h Fri Oct 07 01:21:28 2022 -0500
@@ -56,20 +56,6 @@
GHashTable *jabber_chat_info_defaults(PurpleConnection *gc, const char *chat_name);
char *jabber_get_chat_name(PurpleProtocolChat *protocol_chat, GHashTable *data);
- * in-protocol function for joining a chat room. Doesn't require sticking goop
- * @param room The room to join. This MUST be normalized already.
- * @param server The server the room is on. This MUST be normalized already.
- * @param password The password (if required) to join the room. May be NULL.
- * @param data The chat hash table. May be NULL (it will be generated
- * for current core<>protocol API interface.)
-JabberChat *jabber_join_chat(JabberStream *js, const char *room,
- const char *server, const char *handle,
- const char *password, GHashTable *data);
void jabber_chat_join(PurpleConnection *gc, GHashTable *data);
JabberChat *jabber_chat_find(JabberStream *js, const char *room,
@@ -107,8 +93,4 @@
void jabber_chat_disco_traffic(JabberChat *chat);
-gboolean jabber_chat_all_participants_have_capability(const JabberChat *chat,
-guint jabber_chat_get_num_participants(const JabberChat *chat);
#endif /* PURPLE_JABBER_CHAT_H */
--- a/libpurple/protocols/jabber/data.c Thu Oct 06 23:56:19 2022 -0500
+++ b/libpurple/protocols/jabber/data.c Fri Oct 07 01:21:28 2022 -0500
@@ -412,7 +412,8 @@
g_hash_table_insert(remote_data_by_cid, cid, data);
+/* Handles iq requests. */ jabber_data_parse(JabberStream *js, const char *who, JabberIqType type,
const char *id, PurpleXmlNode *data_node)
--- a/libpurple/protocols/jabber/ibb.c Thu Oct 06 23:56:19 2022 -0500
+++ b/libpurple/protocols/jabber/ibb.c Fri Oct 07 01:21:28 2022 -0500
@@ -32,6 +32,8 @@
static GHashTable *jabber_ibb_sessions = NULL;
static GList *open_handlers = NULL;
+static JabberStream *jabber_ibb_session_get_js(JabberIBBSession *sess); jabber_ibb_session_create(JabberStream *js, const gchar *sid, const gchar *who,
@@ -107,31 +109,31 @@
jabber_ibb_session_get_sid(const JabberIBBSession *sess)
jabber_ibb_session_get_js(JabberIBBSession *sess)
jabber_ibb_session_get_who(const JabberIBBSession *sess)
jabber_ibb_session_get_send_seq(const JabberIBBSession *sess)
jabber_ibb_session_get_recv_seq(const JabberIBBSession *sess)
@@ -149,17 +151,6 @@
-jabber_ibb_session_set_block_size(JabberIBBSession *sess, gsize size)
- if (jabber_ibb_session_get_state(sess) == JABBER_IBB_SESSION_NOT_OPENED) {
- sess->block_size = size;
- purple_debug_error("jabber",
- "Can't set block size on an open IBB session\n");
jabber_ibb_session_get_max_data_size(const JabberIBBSession *sess)
@@ -273,18 +264,6 @@
-jabber_ibb_session_accept(JabberIBBSession *sess)
- JabberIq *result = jabber_iq_new(jabber_ibb_session_get_js(sess),
- purple_xmlnode_set_attrib(result->node, "to", jabber_ibb_session_get_who(sess));
- jabber_iq_set_id(result, sess->id);
- jabber_iq_send(result);
- sess->state = JABBER_IBB_SESSION_OPENED;
jabber_ibb_session_send_acknowledge_cb(JabberStream *js, const char *from,
JabberIqType type, const char *id,
@@ -379,7 +358,8 @@
+/* Handle incoming packet. */ jabber_ibb_parse(JabberStream *js, const char *who, JabberIqType type,
const char *id, PurpleXmlNode *child)
--- a/libpurple/protocols/jabber/ibb.h Thu Oct 06 23:56:19 2022 -0500
+++ b/libpurple/protocols/jabber/ibb.h Fri Oct 07 01:21:28 2022 -0500
@@ -94,21 +94,12 @@
void jabber_ibb_session_open(JabberIBBSession *sess);
void jabber_ibb_session_close(JabberIBBSession *sess);
-void jabber_ibb_session_accept(JabberIBBSession *sess);
void jabber_ibb_session_send_data(JabberIBBSession *sess, gconstpointer data,
-const gchar *jabber_ibb_session_get_sid(const JabberIBBSession *sess);
-JabberStream *jabber_ibb_session_get_js(JabberIBBSession *sess);
-const gchar *jabber_ibb_session_get_who(const JabberIBBSession *sess);
-guint16 jabber_ibb_session_get_send_seq(const JabberIBBSession *sess);
-guint16 jabber_ibb_session_get_recv_seq(const JabberIBBSession *sess);
JabberIBBSessionState jabber_ibb_session_get_state(const JabberIBBSession *sess);
gsize jabber_ibb_session_get_block_size(const JabberIBBSession *sess);
-void jabber_ibb_session_set_block_size(JabberIBBSession *sess, gsize size);
/* get maximum size data block to send (in bytes)
(before encoded to BASE64) */
@@ -116,10 +107,6 @@
gpointer jabber_ibb_session_get_user_data(JabberIBBSession *sess);
-/* handle incoming packet */
-void jabber_ibb_parse(JabberStream *js, const char *who, JabberIqType type,
- const char *id, PurpleXmlNode *child);
/* add a handler for open session */
void jabber_ibb_register_open_handler(JabberIBBOpenHandler *cb);
void jabber_ibb_unregister_open_handler(JabberIBBOpenHandler *cb);
--- a/libpurple/protocols/jabber/jabber.c Thu Oct 06 23:56:19 2022 -0500
+++ b/libpurple/protocols/jabber/jabber.c Fri Oct 07 01:21:28 2022 -0500
@@ -78,6 +78,10 @@
static gint plugin_ref = 0;
static void jabber_unregister_account_cb(JabberStream *js);
+static void jabber_send_raw(PurpleProtocolServer *protocol_server, JabberStream *js, const gchar *data, gint len); +static void jabber_remove_feature(const gchar *namespace); +static gboolean jabber_initiate_media(PurpleProtocolMedia *media, PurpleAccount *account, const char *who, PurpleMediaSessionType type); +static PurpleMediaCaps jabber_get_media_caps(PurpleProtocolMedia *media, PurpleAccount *account, const char *who); static void jabber_stream_init(JabberStream *js)
@@ -403,7 +407,7 @@
jabber_send_raw(PurpleProtocolServer *protocol_server, JabberStream *js,
const gchar *data, gint len)
@@ -509,7 +513,7 @@
do_jabber_send_raw(js, data, len);
jabber_protocol_send_raw(PurpleProtocolServer *protocol_server,
PurpleConnection *gc, const gchar *buf, gint len)
@@ -525,8 +529,9 @@
return (len < 0 ? (int)strlen(buf) : len);
-void jabber_send_signal_cb(PurpleConnection *pc, PurpleXmlNode **packet,
+jabber_send_signal_cb(PurpleConnection *pc, PurpleXmlNode **packet, + G_GNUC_UNUSED gpointer unused) @@ -566,7 +571,7 @@
jabber_keepalive(PurpleProtocolServer *protocol_server, PurpleConnection *gc) {
JabberStream *js = purple_connection_get_protocol_data(gc);
@@ -998,7 +1003,7 @@
jabber_login(G_GNUC_UNUSED PurpleProtocol *protocol, PurpleAccount *account) {
PurpleConnection *gc = purple_account_get_connection(account);
@@ -1423,15 +1428,7 @@
-void jabber_register_gateway(JabberStream *js, const char *gateway) {
- iq = jabber_iq_new_query(js, JABBER_IQ_GET, "jabber:iq:register");
- purple_xmlnode_set_attrib(iq->node, "to", gateway);
jabber_register_account(PurpleProtocolServer *protocol_server,
@@ -1487,7 +1484,7 @@
jabber_unregister_account(PurpleProtocolServer *protocol_server,
PurpleAccountUnregistrationCb cb, gpointer user_data)
@@ -1527,7 +1524,7 @@
* termination before destroying everything. That seems like it would require
* changing the semantics of protocol's close(), so it's a good idea for 3.0.0.
jabber_close(G_GNUC_UNUSED PurpleProtocol *protocol, PurpleConnection *gc) {
JabberStream *js = purple_connection_get_protocol_data(gc);
@@ -1650,7 +1647,7 @@
jabber_idle_set(PurpleProtocolServer *protocol_server, PurpleConnection *gc,
@@ -1779,8 +1776,9 @@
-void jabber_add_deny(PurpleProtocolPrivacy *privacy, PurpleConnection *gc,
+jabber_add_deny(PurpleProtocolPrivacy *privacy, PurpleConnection *gc, @@ -1811,8 +1809,9 @@
-void jabber_remove_deny(PurpleProtocolPrivacy *privacy, PurpleConnection *gc,
+jabber_remove_deny(PurpleProtocolPrivacy *privacy, PurpleConnection *gc, @@ -1860,7 +1859,8 @@
-void jabber_remove_feature(const char *namespace) {
+jabber_remove_feature(const char *namespace) { for(feature = jabber_features; feature; feature = feature->next) {
JabberFeature *feat = (JabberFeature*)feature->data;
@@ -1918,8 +1918,23 @@
-void jabber_add_identity(const gchar *category, const gchar *type,
- const gchar *lang, const gchar *name)
+ * @category: The category of the identity. + * @type: The type of the identity. + * @language: (nullable): The language localization of the name. + * @name: The name of the identity. + * Adds an identity to this jabber library instance. For list of valid values + * visit the website of the XMPP Registrar + * (http://xmpp.org/registrar/disco-categories.html#client) + * Like with jabber_add_feature, if you call this while accounts are connected, + * Bad Things will happen. +jabber_add_identity(const gchar *category, const gchar *type, + const gchar *lang, const gchar *name) @@ -1990,7 +2005,7 @@
jabber_list_emblem(PurpleProtocolClient *client, PurpleBuddy *b) {
@@ -2033,7 +2048,7 @@
jabber_status_text(PurpleProtocolClient *client, PurpleBuddy *b) {
@@ -2111,7 +2126,7 @@
jabber_tooltip_text(PurpleProtocolClient *client, PurpleBuddy *b,
PurpleNotifyUserInfo *user_info, gboolean full)
@@ -2225,7 +2240,7 @@
jabber_status_types(G_GNUC_UNUSED PurpleProtocol *protocol,
@@ -2543,7 +2558,7 @@
jabber_find_blist_chat(PurpleProtocolClient *client, PurpleAccount *account,
@@ -2585,7 +2600,7 @@
jabber_convo_closed(PurpleProtocolClient *client, PurpleConnection *gc,
@@ -3079,12 +3094,12 @@
return PURPLE_CMD_RET_OK;
jabber_offline_message(PurpleProtocolClient *client, PurpleBuddy *buddy) {
jabber_audio_enabled(JabberStream *js, const char *namespace)
PurpleMediaManager *manager = purple_media_manager_get();
@@ -3093,7 +3108,7 @@
return (caps & (PURPLE_MEDIA_CAPS_AUDIO | PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION));
jabber_video_enabled(JabberStream *js, const char *namespace)
PurpleMediaManager *manager = purple_media_manager_get();
@@ -3132,7 +3147,7 @@
jabber_initiate_media(PurpleProtocolMedia *media, PurpleAccount *account,
const gchar *who, PurpleMediaSessionType type)
@@ -3273,7 +3288,7 @@
jabber_get_media_caps(PurpleProtocolMedia *media, PurpleAccount *account,
@@ -3356,7 +3371,9 @@
-gboolean jabber_can_receive_file(PurpleProtocolXfer *prplxfer, PurpleConnection *gc, const char *who)
+jabber_can_receive_file(PurpleProtocolXfer *prplxfer, PurpleConnection *gc, JabberStream *js = purple_connection_get_protocol_data(gc);
--- a/libpurple/protocols/jabber/jabber.h Thu Oct 06 23:56:19 2022 -0500
+++ b/libpurple/protocols/jabber/jabber.h Fri Oct 07 01:21:28 2022 -0500
@@ -294,9 +294,6 @@
void jabber_stream_features_parse(JabberStream *js, PurpleXmlNode *packet);
void jabber_process_packet(JabberStream *js, PurpleXmlNode **packet);
void jabber_send(JabberStream *js, PurpleXmlNode *data);
-void jabber_send_raw(PurpleProtocolServer *protocol_server, JabberStream *js, const char *data, int len);
-void jabber_send_signal_cb(PurpleConnection *pc, PurpleXmlNode **packet,
void jabber_stream_set_state(JabberStream *js, JabberStreamState state);
@@ -325,21 +322,6 @@
* will advertised; may be NULL.
void jabber_add_feature(const gchar *namespace, JabberFeatureEnabled cb);
-void jabber_remove_feature(const gchar *namespace);
-/** Adds an identity to this jabber library instance. For list of valid values
- * visit the website of the XMPP Registrar
- * (http://xmpp.org/registrar/disco-categories.html#client)
- * Like with jabber_add_feature, if you call this while accounts are connected,
- * Bad Things will happen.
- * @param category the category of the identity.
- * @param type the type of the identity.
- * @param language the language localization of the name. Can be NULL.
- * @param name the name of the identity.
-void jabber_add_identity(const gchar *category, const gchar *type, const gchar *lang, const gchar *name);
JabberIdentity *jabber_identity_new(const gchar *category, const gchar *type, const gchar *lang, const gchar *name);
void jabber_identity_free(JabberIdentity *id);
@@ -366,33 +348,9 @@
void jabber_stream_restart_inactivity_timer(JabberStream *js);
/** Protocol functions */
-const char* jabber_list_emblem(PurpleProtocolClient *client, PurpleBuddy *b);
-char *jabber_status_text(PurpleProtocolClient *client, PurpleBuddy *b);
-void jabber_tooltip_text(PurpleProtocolClient *client, PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full);
-GList *jabber_status_types(PurpleProtocol *protocol, PurpleAccount *account);
-void jabber_login(PurpleProtocol *protocol, PurpleAccount *account);
-void jabber_close(PurpleProtocol *protocol, PurpleConnection *gc);
-void jabber_idle_set(PurpleProtocolServer *protocol_server, PurpleConnection *gc, int idle);
void jabber_blocklist_parse_push(JabberStream *js, const char *from,
JabberIqType type, const char *id,
void jabber_request_block_list(JabberStream *js);
-void jabber_add_deny(PurpleProtocolPrivacy *privacy, PurpleConnection *gc, const char *who);
-void jabber_remove_deny(PurpleProtocolPrivacy *privacy, PurpleConnection *gc, const char *who);
-void jabber_keepalive(PurpleProtocolServer *protocol_server, PurpleConnection *gc);
-void jabber_register_gateway(JabberStream *js, const char *gateway);
-void jabber_register_account(PurpleProtocolServer *protocol_server, PurpleAccount *account);
-void jabber_unregister_account(PurpleProtocolServer *protocol_server, PurpleAccount *account, PurpleAccountUnregistrationCb cb, void *user_data);
-void jabber_convo_closed(PurpleProtocolClient *client, PurpleConnection *gc, const char *who);
-PurpleChat *jabber_find_blist_chat(PurpleProtocolClient *client, PurpleAccount *account, const char *name);
-gboolean jabber_offline_message(PurpleProtocolClient *client, PurpleBuddy *buddy);
-int jabber_protocol_send_raw(PurpleProtocolServer *protocol_server, PurpleConnection *gc, const char *buf, int len);
-GList *jabber_get_actions(PurpleProtocolClient *client, PurpleConnection *gc);
-gboolean jabber_audio_enabled(JabberStream *js, const char *unused);
-gboolean jabber_video_enabled(JabberStream *js, const char *unused);
-gboolean jabber_initiate_media(PurpleProtocolMedia *media, PurpleAccount *account, const char *who, PurpleMediaSessionType type);
-PurpleMediaCaps jabber_get_media_caps(PurpleProtocolMedia *media, PurpleAccount *account, const char *who);
-gboolean jabber_can_receive_file(PurpleProtocolXfer *xfer, PurpleConnection *gc, const gchar *who);
#endif /* PURPLE_JABBER_JABBER_H */
--- a/libpurple/protocols/jabber/jutil.c Thu Oct 06 23:56:19 2022 -0500
+++ b/libpurple/protocols/jabber/jutil.c Fri Oct 07 01:21:28 2022 -0500
@@ -400,20 +400,6 @@
purple_strequal(jid1->resource, jid2->resource);
-char *jabber_get_domain(const char *in)
- JabberID *jid = jabber_id_new(in);
- out = g_strdup(jid->domain);
char *jabber_get_resource(const char *in)
JabberID *jid = jabber_id_new(in);
@@ -428,17 +414,6 @@
-jabber_id_to_bare_jid(const JabberID *jid)
- JabberID *result = g_new0(JabberID, 1);
- result->node = g_strdup(jid->node);
- result->domain = g_strdup(jid->domain);
jabber_get_bare_jid(const char *in)
@@ -528,28 +503,6 @@
-jabber_is_own_server(JabberStream *js, const char *str)
- g_return_val_if_fail(*str != '\0', FALSE);
- jid = jabber_id_new(str);
- equal = (jid->node == NULL &&
- purple_strequal(jid->domain, js->user->domain) &&
- jid->resource == NULL);
jabber_is_own_account(JabberStream *js, const char *str)
--- a/libpurple/protocols/jabber/jutil.h Thu Oct 06 23:56:19 2022 -0500
+++ b/libpurple/protocols/jabber/jutil.h Fri Oct 07 01:21:28 2022 -0500
@@ -54,20 +54,15 @@
void jabber_id_free(JabberID *jid);
-char *jabber_get_domain(const char *jid);
char *jabber_get_resource(const char *jid);
char *jabber_get_bare_jid(const char *jid);
char *jabber_id_get_bare_jid(const JabberID *jid);
char *jabber_id_get_full_jid(const JabberID *jid);
-JabberID *jabber_id_to_bare_jid(const JabberID *jid);
gboolean jabber_jid_is_domain(const char *jid);
const char *jabber_normalize(const PurpleAccount *account, const char *in);
-/* Returns true if JID is the bare JID of our server. */
-gboolean jabber_is_own_server(JabberStream *js, const char *jid);
/* Returns true if JID is the bare JID of our account. */
gboolean jabber_is_own_account(JabberStream *js, const char *jid);
--- a/libpurple/protocols/jabber/presence.c Thu Oct 06 23:56:19 2022 -0500
+++ b/libpurple/protocols/jabber/presence.c Fri Oct 07 01:21:28 2022 -0500
@@ -50,6 +50,10 @@
/* { NULL, JABBER_PRESENCE_AVAILABLE } the default */
+typedef void (JabberPresenceHandler)(JabberStream *js, + JabberPresence *presence, static JabberPresenceType
str_to_presence_type(const char *type)
@@ -1238,8 +1242,9 @@
presence->chat_info.item = purple_xmlnode_get_child(x, "item");
-void jabber_presence_register_handler(const char *node, const char *xmlns,
- JabberPresenceHandler *handler)
+jabber_presence_register_handler(const char *node, const char *xmlns, + JabberPresenceHandler *handler) * This is valid because nodes nor namespaces cannot have spaces in them
--- a/libpurple/protocols/jabber/si.h Thu Oct 06 23:56:19 2022 -0500
+++ b/libpurple/protocols/jabber/si.h Fri Oct 07 01:21:28 2022 -0500
@@ -36,8 +36,6 @@
void jabber_bytestreams_parse(JabberStream *js, const char *from,
JabberIqType type, const char *id, PurpleXmlNode *query);
-void jabber_si_parse(JabberStream *js, const char *from, JabberIqType type,
- const char *id, PurpleXmlNode *si);
PurpleXfer *jabber_si_new_xfer(PurpleProtocolXfer *prplxfer, PurpleConnection *gc, const char *who);
void jabber_si_xfer_send(PurpleProtocolXfer *prplxfer, PurpleConnection *gc, const char *who, const char *file);