You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I sent an HTTP3 request with CURL (NGTCP2 version) to my http3 server by:
curl -k --http3 https://18.104.22.168:443
I expected the following
After curl received the file, i expect it to send a CONNECTION_CLOSE message.
However no CONNECTION_CLOSE is sent.
Further health-check packets from server gets "ICMP port unreachable" response.
This suggests that the client disconnected and close the connection,
but without sending close message, as it should.
This happens only on latest curl based on NGTCP2.
issue is NOT seen with QUICHE version.
yes, ngtcp2_conn_write_connection_close needs to be called there and send the packet with send(2).
To send the appropriate error code, we need a bit more code, but I have a plan to add new construct to ngtcp2 to make it slightly easier for this, so the simplest fix for now is call ngtcp2_conn_write_connection_close with error_code = 0 and send the packet with send(2).
I tried to send CONNECTION_CLOSE in that function, but the socket has already been closed (conn->tempsock).
conn->sock[FIRSTSOCKET] is the socket in use after the connection has been established.
Is there any hook that is called before closing sockets?
No, as it hasn't been necessary before. It feels like the ngtcp2.c:Curl_quic_disconnect function should be enough. It will (should) be called without the socket having been closed first, as it would be kind of pointless to try any disconnect action if the socket is already closed...