Fix player_login() to obey max_idle for output, too
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 11 Mar 2012 10:49:46 +0000 (11:49 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Thu, 26 Apr 2012 17:43:41 +0000 (19:43 +0200)
commit1dd44b7eeaba691853975641d7220166d278b3f5
tree7b48fc78c3930789321a9d82f4d104899a3d6187
parentd381351c6521552eb901160a982c53c40c63c769
Fix player_login() to obey max_idle for output, too

player_login() flushes the output queue before receiving input.  The
receive obeys max_idle, the flush doesn't.  Which means a client could
hog the thread indefinitely.

Broken in commit 08b94556 (v4.3.20) "Reimplement max_idle without a
separate thread".  Until then, the idle thread aborted a stuck attempt
to flush output.

Denial of service seems possible.
src/lib/player/login.c