[pve-devel] [PATCH-SERIES http-server 0/3] fix disconnecting clients
Fiona Ebner
f.ebner at proxmox.com
Tue Apr 8 16:20:11 CEST 2025
Commit 07e56cc ("fix unexpected EOF for client when closing TLS
session") added a call to stoptls() before the call to shutdown() for
the handle's file descriptor. However, the documentation for
AnyEvent[0] mentions for stoptls():
> This method may invoke callbacks (and therefore the handle might be
> destroyed after it returns).
Indeed, the on_error callback might get invoked and lead to a
"detected empty handle" error message as reported in the community
forum [1].
Also, it is necessary to check that the handle is still defined
before calling shutdown(). Otherwise, this can result in a warning:
> Can't use an undefined value as a symbol reference at
> /usr/share/perl5/PVE/APIServer/AnyEvent.pm line 150.
as reported in the community forum [1] too.
Patches 1/3 and 2/3 are fixes for the reported issues. Patch 3/3 is
further future-proofing.
[0]: https://metacpan.org/pod/AnyEvent::Handle#$handle-%3Estoptls
[1]: https://forum.proxmox.com/threads/164744/
Fiona Ebner (3):
anyevent: disconnect: check that handle is still defined before
calling shutdown()
anyevent: always avoid re-entering client_do_disconnect() in on_error
callback
anyevent: handle 'disconnected' flag in client_do_disconnect() itself
src/PVE/APIServer/AnyEvent.pm | 24 ++++++++++++++----------
1 file changed, 14 insertions(+), 10 deletions(-)
--
2.39.5
More information about the pve-devel
mailing list