summaryrefslogtreecommitdiff
path: root/libpurple/server.c
diff options
context:
space:
mode:
authorGary Kramlich <grim@reaperworld.com>2020-10-03 05:58:21 -0500
committerGary Kramlich <grim@reaperworld.com>2020-10-03 05:58:21 -0500
commitcac0124838270bd3be2004e271c2e91e583d6f08 (patch)
tree5cec70b62de32748633f971b86dc5da80b797102 /libpurple/server.c
parentd4bafb96a107397b9d1edeaafb1512aba6212962 (diff)
downloadpidgin-cac0124838270bd3be2004e271c2e91e583d6f08.tar.gz
PurpleMessage cleanups from hell
Clean up libpurple/message.[ch] and remove the messages hash table as its current implementation will not fit our future needs add a content-type property to PurpleMessage Convert message timestamps from time_t to GDateTime and set default values Make purple_message_new_outgoing take a parameter for the author. Testing Done: messages sent on bonjour, irc privmsg, irc chat, `/me` is broken i think unrelated. Reviewed at https://reviews.imfreedom.org/r/124/
Diffstat (limited to 'libpurple/server.c')
-rw-r--r--libpurple/server.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/libpurple/server.c b/libpurple/server.c
index 35fcd67cc3..ff9e8f267f 100644
--- a/libpurple/server.c
+++ b/libpurple/server.c
@@ -556,6 +556,7 @@ void purple_serv_got_im(PurpleConnection *gc, const char *who, const char *msg,
pmsg = purple_message_new_incoming(name, message, flags, mtime);
purple_conversation_write_message(PURPLE_CONVERSATION(im), pmsg);
g_free(message);
+ g_object_unref(G_OBJECT(pmsg));
/*
* Don't autorespond if:
@@ -622,12 +623,15 @@ void purple_serv_got_im(PurpleConnection *gc, const char *who, const char *msg,
if (!(flags & PURPLE_MESSAGE_AUTO_RESP))
{
PurpleMessage *msg;
+ const gchar *me = purple_account_get_name_for_display(account);
- msg = purple_message_new_outgoing(name,
+ msg = purple_message_new_outgoing(me, name,
away_msg, PURPLE_MESSAGE_AUTO_RESP);
purple_serv_send_im(gc, msg);
purple_conversation_write_message(PURPLE_CONVERSATION(im), msg);
+
+ g_object_unref(G_OBJECT(msg));
}
}
}
@@ -890,16 +894,23 @@ void purple_serv_got_chat_in(PurpleConnection *g, int id, const char *who,
purple_signal_emit(purple_conversations_get_handle(), "received-chat-msg", purple_connection_get_account(g),
who, message, chat, flags);
- if (flags & PURPLE_MESSAGE_RECV)
+ if (flags & PURPLE_MESSAGE_RECV) {
pmsg = purple_message_new_incoming(who, message, flags, mtime);
- else {
- pmsg = purple_message_new_outgoing(who, message, flags);
- purple_message_set_time(pmsg, mtime);
+ } else {
+ PurpleAccount *account = purple_connection_get_account(g);
+ GDateTime *dt = g_date_time_new_from_unix_local((gint64)mtime);
+ const gchar *me = purple_account_get_name_for_display(account);
+
+ pmsg = purple_message_new_outgoing(me, who, message, flags);
+ purple_message_set_timestamp(pmsg, dt);
+ g_date_time_unref(dt);
}
purple_conversation_write_message(PURPLE_CONVERSATION(chat), pmsg);
g_free(angel);
g_free(buffy);
+
+ g_object_unref(G_OBJECT(pmsg));
}
void purple_serv_send_file(PurpleConnection *gc, const char *who, const char *file)