degesch: don't ignore data right before an EOF

This commit is contained in:
Přemysl Eric Janouch 2015-08-12 23:20:46 +02:00
parent 8a8ff11887
commit ce83f8244c
1 changed files with 7 additions and 10 deletions

View File

@ -3966,18 +3966,15 @@ static enum transport_io_result
irc_try_read (struct server *s)
{
enum transport_io_result result = s->transport->try_read (s);
if (result == TRANSPORT_IO_OK)
if (s->read_buffer.len >= (1 << 20))
{
if (s->read_buffer.len >= (1 << 20))
{
// XXX: this is stupid; if anything, count it in dependence of time
log_server_error (s, s->buffer,
"The IRC server seems to spew out data frantically");
return TRANSPORT_IO_ERROR;
}
if (s->read_buffer.len)
irc_process_buffer (&s->read_buffer, irc_process_message, s);
// XXX: this is stupid; if anything, count it in dependence of time
log_server_error (s, s->buffer,
"The IRC server seems to spew out data frantically");
return TRANSPORT_IO_ERROR;
}
if (s->read_buffer.len)
irc_process_buffer (&s->read_buffer, irc_process_message, s);
return result;
}