Jan Andres | 29 Jul 2012 22:59
Picon

[Messy Patch] XOVER Command Pipelining

Hello,

I've noticed many times that slrn can be a bit slow when opening busy
groups where it needs to send many XOVER commands to the server; in my
case the server isn't actually slow to reply. Rather, the issue is
network latency and slrn's consuming the response to each XOVER
command before sending out the next one.

RFC 3977 explicitly allows command pipelining in NNTP so I was wondering
if that could help speed things up. And indeed it does. I hacked up a
little proof-of-concept patch and found that slrn can now open all my
groups within less than a second, which is at least a 10-fold
improvement.

The basic idea is initially to prepare a buffer containing all the
desired XOVER commands and extend the select() loop in wait_for_input()
so it will asynchronously send out the buffer's contents along with the
processing of the replies.

The patch is just a quick hack, it has basically no error handling and
it breaks a lot of things (including SSL), but it should help illustrate
the basic idea. I hope I'll have some time to get it into a more usable
state.

Cheers,
Jan

diff --git a/src/art.c b/src/art.c
index 513858a..f2dd345 100644
--- a/src/art.c
(Continue reading)


Gmane