From ff9ae904eafa4195044ea04b7cd0d3864e5935d9 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Fri, 23 Feb 2018 17:11:04 +0800 Subject: [PATCH 1/3] add a SERVER_BUSY error code --- draft-ietf-quic-transport.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/draft-ietf-quic-transport.md b/draft-ietf-quic-transport.md index 029d4c708d..ec07b09614 100644 --- a/draft-ietf-quic-transport.md +++ b/draft-ietf-quic-transport.md @@ -926,8 +926,11 @@ server continues below. If the packet is an Initial packet fully conforming with the specification, the server proceeds with the handshake ({{handshake}}). -This commits the server to the version that the client -selected. +This commits the server to the version that the client selected. + +If the server currently doesn't accept any new connections, it SHOULD send a +SERVER_BUSY error code. A client that receives this error code SHOULD NOT +immediately try to reconnect to this server. If the packet is a 0-RTT packet, the server MAY buffer a limited number of these packets in anticipation of a late-arriving Initial @@ -3676,6 +3679,9 @@ INTERNAL_ERROR (0x1): : The endpoint encountered an internal error and cannot continue with the connection. +SERVER_BUSY (0x2): +: The server is currently busy and does not accept any new connections. + FLOW_CONTROL_ERROR (0x3): : An endpoint received more data than it permitted in its advertised data limits From a8f0331e79e45364b20714b8c9200b5320f29731 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Fri, 2 Mar 2018 10:38:49 +0700 Subject: [PATCH 2/3] Mike's review --- draft-ietf-quic-transport.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/draft-ietf-quic-transport.md b/draft-ietf-quic-transport.md index ec07b09614..625c590d95 100644 --- a/draft-ietf-quic-transport.md +++ b/draft-ietf-quic-transport.md @@ -928,9 +928,9 @@ If the packet is an Initial packet fully conforming with the specification, the server proceeds with the handshake ({{handshake}}). This commits the server to the version that the client selected. -If the server currently doesn't accept any new connections, it SHOULD send a -SERVER_BUSY error code. A client that receives this error code SHOULD NOT -immediately try to reconnect to this server. +If a server isn't currently accepting any new connections, it SHOULD send a +Handshake packet containing a CONNECTION_CLOSE frame with error code +SERVER_BUSY. If the packet is a 0-RTT packet, the server MAY buffer a limited number of these packets in anticipation of a late-arriving Initial @@ -3680,6 +3680,7 @@ INTERNAL_ERROR (0x1): connection. SERVER_BUSY (0x2): + : The server is currently busy and does not accept any new connections. FLOW_CONTROL_ERROR (0x3): From eab5b3e30b102bdaeffb3cdee3f141b8abd3ccb9 Mon Sep 17 00:00:00 2001 From: Martin Thomson Date: Fri, 2 Mar 2018 15:01:56 +1100 Subject: [PATCH 3/3] Add SERVER_BUSY to IANA table --- draft-ietf-quic-transport.md | 1 + 1 file changed, 1 insertion(+) diff --git a/draft-ietf-quic-transport.md b/draft-ietf-quic-transport.md index 625c590d95..f261d58236 100644 --- a/draft-ietf-quic-transport.md +++ b/draft-ietf-quic-transport.md @@ -3935,6 +3935,7 @@ the range from 0xFE00 to 0xFFFF. |:------------|:--------------------------|:------------------------------|:----------------| | 0x0 | NO_ERROR | No error | {{error-codes}} | | 0x1 | INTERNAL_ERROR | Implementation error | {{error-codes}} | +| 0x2 | SERVER_BUSY | Server currently busy | {{error-codes}} | | 0x3 | FLOW_CONTROL_ERROR | Flow control error | {{error-codes}} | | 0x4 | STREAM_ID_ERROR | Invalid stream ID | {{error-codes}} | | 0x5 | STREAM_STATE_ERROR | Frame received in invalid stream state | {{error-codes}} |