degesch: fix irc_process_message()

This commit is contained in:
Přemysl Eric Janouch 2015-04-17 22:11:36 +02:00
parent f9125c38c0
commit 6c4e7f8fdc
1 changed files with 11 additions and 5 deletions

View File

@ -1517,8 +1517,8 @@ irc_process_message (const struct irc_message *msg,
|| !strcasecmp (msg->command, "376") // RPL_ENDOFMOTD
|| !strcasecmp (msg->command, "422"))) // ERR_NOMOTD
{
// FIXME: print to the server buffer
print_status ("successfully connected");
// XXX: should we really print this?
buffer_send_status (ctx, ctx->server_buffer, "successfully connected");
ctx->irc_ready = true;
const char *autojoin = str_map_find (&ctx->config, "autojoin");
@ -1530,14 +1530,20 @@ irc_process_message (const struct irc_message *msg,
struct irc_handler *handler = bsearch (&key, g_irc_handlers,
N_ELEMENTS (g_irc_handlers), sizeof key, irc_handler_cmp_by_name);
if (handler)
{
handler->handler (ctx, msg);
return;
}
// Numerics typically have human-readable information
unsigned long dummy;
if (xstrtoul (&dummy, msg->command, 10))
// TODO: ensure proper encoding
// FIXME: print to the server buffer
print_status ("%s", raw);
{
// TODO: check for valid UTF-8 and eventually try recoding from fallback
char *reconstructed = join_str_vector (&msg->params, ' ');
buffer_send_status (ctx, ctx->server_buffer, "%s", reconstructed);
free (reconstructed);
}
}
// --- User input handling -----------------------------------------------------