7. Error Codes (Fehlercodes)
Fehlercodes (Error codes) sind 32-Bit-Felder, die in RST_STREAM- und GOAWAY-Frames verwendet werden, um die Gründe für Stream- oder Verbindungsfehler zu übermitteln.
Fehlercodes teilen sich einen gemeinsamen Code-Raum. Einige Fehlercodes gelten nur für Streams oder die gesamte Verbindung und haben im jeweils anderen Kontext keine definierten Semantiken.
Die folgenden Fehlercodes sind definiert:
NO_ERROR (0x00): Die zugehörige Bedingung ist nicht das Ergebnis eines Fehlers. Beispielsweise kann ein GOAWAY diesen Code enthalten, um einen ordnungsgemäßen Verbindungsabschluss anzuzeigen.
PROTOCOL_ERROR (0x01): Der Endpunkt hat einen unspezifischen Protokollfehler erkannt. Dieser Fehler wird verwendet, wenn kein spezifischerer Fehlercode verfügbar ist.
INTERNAL_ERROR (0x02): Der Endpunkt ist auf einen unerwarteten internen Fehler gestoßen.
FLOW_CONTROL_ERROR (0x03): Der Endpunkt hat festgestellt, dass sein Peer gegen das Flusskontrollprotokoll verstoßen hat.
SETTINGS_TIMEOUT (0x04): Der Endpunkt hat innerhalb einer angemessenen Zeit keine Antwort auf einen SETTINGS-Frame erhalten. Siehe Abschnitt 6.5.3 („Einstellungssynchronisation").
STREAM_CLOSED (0x05): Der Endpunkt hat einen Frame erhalten, nachdem ein Stream halb geschlossen war.
FRAME_SIZE_ERROR (0x06): Der Endpunkt hat einen Frame mit einer ungültigen Größe erhalten.
REFUSED_STREAM (0x07): Der Endpunkt hat den Stream abgelehnt, bevor eine Anwendungsverarbeitung durchgeführt wurde (siehe Abschnitt 8.7 für Details).
CANCEL (0x08): Der Endpunkt verwendet dies, um anzuzeigen, dass der Stream nicht mehr benötigt wird.
COMPRESSION_ERROR (0x09): Der Endpunkt kann den Feldabschnittskomprimierungskontext für die Verbindung nicht aufrechterhalten.
CONNECT_ERROR (0x0a): Die als Antwort auf eine CONNECT-Anfrage (Abschnitt 8.5) hergestellte Verbindung wurde zurückgesetzt oder abnormal geschlossen.
ENHANCE_YOUR_CALM (0x0b): Der Endpunkt hat festgestellt, dass sein Peer ein Verhalten zeigt, das möglicherweise übermäßige Last erzeugt.
INADEQUATE_SECURITY (0x0c): Der zugrunde liegende Transport hat Eigenschaften, die die Mindestsicherheitsanforderungen nicht erfüllen (siehe Abschnitt 9.2).
HTTP_1_1_REQUIRED (0x0d): Der Endpunkt erfordert, dass HTTP/1.1 anstelle von HTTP/2 verwendet wird.
Unbekannte oder nicht unterstützte Fehlercodes DÜRFEN KEIN spezielles Verhalten auslösen. Diese KÖNNEN von einer Implementierung als äquivalent zu INTERNAL_ERROR behandelt werden.
Kapitel 7 abgeschlossen!