Annotate
net.server_epoll: Prevent loop attempting to send last data after close
If the connection is closed by the peer, any buffered data is given a
last chance to be sent (see f27b9319e0da). If the connection is Really
closed, no attempt to write will occur, instead epoll will raise the
error flag and :onreadable() will be invoked again, where it will try to
:close() again for the same reason, thus looping until the connection
somehow gets destroyed.
By clearing the _connected flag, the second time it passes :onreadable()
it should go directly to :destroy(), breaking the loop.
Thanks Link Mauve for reporting
author |
Kim Alvefur <zash@zash.se> |
date |
Tue, 30 Nov 2021 18:19:40 +0100 |
parent |
5403:d7ecf6cd584e |
rev |
line source |
5403
|
1
|
|
2 The Prosody project is open to contributions (see HACKERS file), but is
|
|
3 maintained daily by:
|
94
|
4
|
5403
|
5 - Matthew Wild (mail: matthew [at] prosody.im)
|
|
6 - Waqas Hussain (mail: waqas [at] prosody.im)
|
|
7 - Kim Alvefur (mail: zash [at] prosody.im)
|
|
8
|
|
9 You can reach us collectively by email: developers [at] prosody.im
|
|
10 or in realtime in the Prosody chatroom: prosody@conference.prosody.im
|