From 53777c8c1d651ae2fae519dc5f476d388aeebebd Mon Sep 17 00:00:00 2001 From: Jochen Eisinger Date: Thu, 30 Oct 2003 13:14:42 +0000 Subject: [PATCH] Wed Oct 30 14:06:52 CET 2003 Jochen Eisinger * Changed MIME signal handler to make things easier for the perl script. Affected files irssi/src/silc/core/client_ops.c, silc-servers.c, and irssi/docs/signals.txt --- apps/irssi/docs/signals.txt | 4 ++-- apps/irssi/src/silc/core/client_ops.c | 11 +++++---- apps/irssi/src/silc/core/silc-servers.c | 31 ++++++++++++++++++------- 3 files changed, 31 insertions(+), 15 deletions(-) diff --git a/apps/irssi/docs/signals.txt b/apps/irssi/docs/signals.txt index 8944ea0e..e893b6d6 100644 --- a/apps/irssi/docs/signals.txt +++ b/apps/irssi/docs/signals.txt @@ -329,7 +329,7 @@ SILC --- silc-channels.c: - "mime", SERVER_REC, CHANNEL_REC, char *blob, char *nick, int verified + "mime", SERVER_REC, WI_ITEM_REC, char *blob, char *nick, int verified silc-servers.c: - "mime-send", SERVER_REC, WI_ITEM_REC, char *blob, int sign + "mime-send", SERVER_REC, int is_channel, char *to, char *blob, int sign diff --git a/apps/irssi/src/silc/core/client_ops.c b/apps/irssi/src/silc/core/client_ops.c index f8347c96..f57dc12a 100644 --- a/apps/irssi/src/silc/core/client_ops.c +++ b/apps/irssi/src/silc/core/client_ops.c @@ -345,7 +345,7 @@ char * silc_escape_data(const char *data, SilcUInt32 len) return escaped_data; } -void silc_emit_mime_sig(SILC_SERVER_REC *server, SILC_CHANNEL_REC *channel, +void silc_emit_mime_sig(SILC_SERVER_REC *server, WI_ITEM_REC *item, const char *data, SilcUInt32 data_len, const char *nick, int verified) { @@ -353,7 +353,7 @@ void silc_emit_mime_sig(SILC_SERVER_REC *server, SILC_CHANNEL_REC *channel, escaped_data = silc_escape_data(data, data_len); - signal_emit("mime", 4, server, channel, escaped_data, nick, verified); + signal_emit("mime", 4, server, item, escaped_data, nick, verified); silc_free(escaped_data); } @@ -402,7 +402,7 @@ void silc_channel_message(SilcClient client, SilcClientConnection conn, } if (flags & SILC_MESSAGE_FLAG_DATA) { - silc_emit_mime_sig(server, chanrec, message, message_len, + silc_emit_mime_sig(server, (WI_ITEM_REC *)chanrec, message, message_len, nick == NULL ? NULL : nick->nick, flags & SILC_MESSAGE_FLAG_SIGNED ? verified : -1); message = NULL; @@ -527,7 +527,10 @@ void silc_private_message(SilcClient client, SilcClientConnection conn, } if (flags & SILC_MESSAGE_FLAG_DATA) { - silc_emit_mime_sig(server, NULL, message, message_len, + silc_emit_mime_sig(server, + sender->nickname ? + (WI_ITEM_REC *)query_find(server, sender->nickname) : NULL, + message, message_len, sender->nickname ? sender->nickname : "[]", flags & SILC_MESSAGE_FLAG_SIGNED ? verified : -1); message = NULL; diff --git a/apps/irssi/src/silc/core/silc-servers.c b/apps/irssi/src/silc/core/silc-servers.c index 3cafc80c..54803ba1 100644 --- a/apps/irssi/src/silc/core/silc-servers.c +++ b/apps/irssi/src/silc/core/silc-servers.c @@ -174,33 +174,46 @@ static int silc_send_msg(SILC_SERVER_REC *server, char *nick, char *msg, return TRUE; } -void silc_send_mime(SILC_SERVER_REC *server, WI_ITEM_REC *to, +void silc_send_mime(SILC_SERVER_REC *server, int channel, const char *to, const char *data, int sign) { - SILC_CHANNEL_REC *channel; - QUERY_REC *query; char *unescaped_data; SilcUInt32 unescaped_data_len; + int target_type; if (!(IS_SILC_SERVER(server)) || (data == NULL) || (to == NULL)) return; + if (channel) { + target_type = SEND_TARGET_CHANNEL; + } else { + target_type = server_ischannel(SERVER(server), to) ? + SEND_TARGET_CHANNEL : SEND_TARGET_NICK; + } + unescaped_data = silc_unescape_data(data, &unescaped_data_len); - if (IS_SILC_CHANNEL(to)) { - channel = SILC_CHANNEL(to); - silc_client_send_channel_message(silc_client, server->conn, channel->entry, + if (target_type == SEND_TARGET_CHANNEL) { + SILC_CHANNEL_REC *rec; + + rec = silc_channel_find(server, to); + if (rec == NULL || rec->entry == NULL) { + cmd_return_error(CMDERR_NOT_JOINED); + } + + silc_client_send_channel_message(silc_client, server->conn, rec->entry, NULL, SILC_MESSAGE_FLAG_DATA | (sign ? SILC_MESSAGE_FLAG_SIGNED : 0), unescaped_data, unescaped_data_len, TRUE); - } else if (IS_SILC_QUERY(to)) { - query = SILC_QUERY(to); - silc_send_msg(server, query->name, unescaped_data, unescaped_data_len, + } else { + silc_send_msg(server, to, unescaped_data, unescaped_data_len, SILC_MESSAGE_FLAG_DATA | (sign ? SILC_MESSAGE_FLAG_SIGNED : 0)); } + signal_stop(); + silc_free(unescaped_data); } -- 2.43.0