Am 04.12.24 um 10:52 schrieb Fabian Grünbichler:
> client_do_disconnect expects to be called exactly once per connection, since 
> it
> takes care of closing and unsetting the handle corresponding to the 
> connection.
> to find bugs in our connection handling, it will log "detected empty handle" 
> if
> it is called for a request/connection that no longer has a handle.
> 
> the edge case of opening a connection without sending any data leads to the
> error callback being called twice:
> 
> Dec 04 09:37:02 xxx pveproxy[175235]: err (): Connection timed out
> 
> this is the (5 second) timeout triggering
> 
> Dec 04 09:37:02 xxx pveproxy[175235]: err (1): Broken pipe
> 
> this is AnyEvent trying to drain the buffer while the connection is already
> closed
> 
> as soon as a single byte of traffic is sent, only the timeout will trigger.
> 
> there is no guarantee that the on_error callback is only called once (in fact,
> it's possible to return from it for non-fatal errors and continue processing
> the connection).
> 
> if there are further reports of empty handles with this in place, other
> on_error callbacks might need similar logic - but it should only be added if
> the triggering conditions are clear and deemed safe. the additional logging is
> only cosmetic after all, but might point out an actual issue in our connection
> handling code.
> 
> Signed-off-by: Fabian Grünbichler <f.gruenbich...@proxmox.com>
> ---
>  src/PVE/APIServer/AnyEvent.pm | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
>

applied, thanks!


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to