mirror of
https://github.com/osmarks/ngircd.git
synced 2024-12-12 09:50:29 +00:00
Fix recursion bug on write error
Depending on the stack size, too many clients on the same channel quitting at the same time would trigger a crash due to too many recursive calls to Conn_Close().
This commit is contained in:
parent
13b8324c4a
commit
04de1423eb
@ -1272,6 +1272,9 @@ Handle_Write( CONN_ID Idx )
|
||||
if (errno == EAGAIN || errno == EINTR)
|
||||
return true;
|
||||
|
||||
/* Log write errors but do not close the connection yet.
|
||||
* Calling Conn_Close() now could result in too many recursive calls.
|
||||
*/
|
||||
if (!Conn_OPTION_ISSET(&My_Connections[Idx], CONN_ISCLOSING))
|
||||
Log(LOG_ERR,
|
||||
"Write error on connection %d (socket %d): %s!",
|
||||
@ -1279,7 +1282,7 @@ Handle_Write( CONN_ID Idx )
|
||||
else
|
||||
LogDebug("Recursive write error on connection %d (socket %d): %s!",
|
||||
Idx, My_Connections[Idx].sock, strerror(errno));
|
||||
Conn_Close(Idx, "Write error", NULL, false);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user