--- a/libpurple/protocols/irc/irc.c Mon May 30 23:23:52 2022 -0500
+++ b/libpurple/protocols/irc/irc.c Tue May 31 00:07:27 2022 -0500
@@ -88,16 +88,32 @@
static int do_send(struct irc_conn *irc, const char *buf, gsize len)
+ gchar *tosend = g_strndup(buf, len); + purple_signal_emit(_irc_plugin, "irc-sending-text", purple_account_get_connection(irc->account), &tosend); + if(purple_debug_is_verbose()) { + char *clean = purple_utf8_salvage(tosend); + clean = g_strstrip(clean); + purple_debug_misc("irc", "<< %s\n", clean); - ret = purple_ssl_write(irc->gsc, buf, len);
+ ret = purple_ssl_write(irc->gsc, tosend, strlen(tosend)); - ret = write(irc->fd, buf, len);
+ ret = write(irc->fd, tosend, strlen(tosend)); irc->send_time = time(NULL);
@@ -160,7 +176,7 @@
ret = do_send(irc, msg, length);
- if(ret <= 0 && errno != EAGAIN) {
+ if(ret < 0 && errno != EAGAIN) { PurpleConnection *gc = purple_account_get_connection(irc->account);
gchar *tmp = g_strdup_printf(_("Lost connection with server: %s"),
@@ -225,22 +241,7 @@
irc_send_len(struct irc_conn *irc, const char *buf, int buflen) {
- char *tosend = g_strdup(buf);
- purple_signal_emit(_irc_plugin, "irc-sending-text", purple_account_get_connection(irc->account), &tosend);
- if(purple_debug_is_verbose()) {
- char *clean = purple_utf8_salvage(tosend);
- clean = g_strstrip(clean);
- purple_debug_misc("irc", "<< %s\n", clean);
- g_queue_push_tail(irc->send_queue, tosend);
+ g_queue_push_tail(irc->send_queue, g_strdup(buf)); /* XXX I don't like messing directly with these buddies */