File: nghttp3_err.c

package info (click to toggle)
nghttp3 1.15.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,496 kB
  • sloc: ansic: 26,781; sh: 4,449; cpp: 643; makefile: 171
file content (131 lines) | stat: -rw-r--r-- 4,960 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*
 * nghttp3
 *
 * Copyright (c) 2019 nghttp3 contributors
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
#include "nghttp3_err.h"

const char *nghttp3_strerror(int liberr) {
  switch (liberr) {
  case NGHTTP3_ERR_INVALID_ARGUMENT:
    return "ERR_INVALID_ARGUMENT";
  case NGHTTP3_ERR_INVALID_STATE:
    return "ERR_INVALID_STATE";
  case NGHTTP3_ERR_WOULDBLOCK:
    return "ERR_WOULDBLOCK";
  case NGHTTP3_ERR_STREAM_IN_USE:
    return "ERR_STREAM_IN_USE";
  case NGHTTP3_ERR_MALFORMED_HTTP_HEADER:
    return "ERR_MALFORMED_HTTP_HEADER";
  case NGHTTP3_ERR_REMOVE_HTTP_HEADER:
    return "ERR_REMOVE_HTTP_HEADER";
  case NGHTTP3_ERR_MALFORMED_HTTP_MESSAGING:
    return "ERR_MALFORMED_HTTP_MESSAGING";
  case NGHTTP3_ERR_QPACK_FATAL:
    return "ERR_QPACK_FATAL";
  case NGHTTP3_ERR_QPACK_HEADER_TOO_LARGE:
    return "ERR_QPACK_HEADER_TOO_LARGE";
  case NGHTTP3_ERR_STREAM_NOT_FOUND:
    return "ERR_STREAM_NOT_FOUND";
  case NGHTTP3_ERR_CONN_CLOSING:
    return "ERR_CONN_CLOSING";
  case NGHTTP3_ERR_STREAM_DATA_OVERFLOW:
    return "ERR_STREAM_DATA_OVERFLOW";
  case NGHTTP3_ERR_QPACK_DECOMPRESSION_FAILED:
    return "ERR_QPACK_DECOMPRESSION_FAILED";
  case NGHTTP3_ERR_QPACK_ENCODER_STREAM_ERROR:
    return "ERR_QPACK_ENCODER_STREAM_ERROR";
  case NGHTTP3_ERR_QPACK_DECODER_STREAM_ERROR:
    return "ERR_QPACK_DECODER_STREAM_ERROR";
  case NGHTTP3_ERR_H3_FRAME_UNEXPECTED:
    return "ERR_H3_FRAME_UNEXPECTED";
  case NGHTTP3_ERR_H3_FRAME_ERROR:
    return "ERR_H3_FRAME_ERROR";
  case NGHTTP3_ERR_H3_MISSING_SETTINGS:
    return "ERR_H3_MISSING_SETTINGS";
  case NGHTTP3_ERR_H3_INTERNAL_ERROR:
    return "ERR_H3_INTERNAL_ERROR";
  case NGHTTP3_ERR_H3_CLOSED_CRITICAL_STREAM:
    return "ERR_CLOSED_CRITICAL_STREAM";
  case NGHTTP3_ERR_H3_GENERAL_PROTOCOL_ERROR:
    return "ERR_H3_GENERAL_PROTOCOL_ERROR";
  case NGHTTP3_ERR_H3_ID_ERROR:
    return "ERR_H3_ID_ERROR";
  case NGHTTP3_ERR_H3_SETTINGS_ERROR:
    return "ERR_H3_SETTINGS_ERROR";
  case NGHTTP3_ERR_H3_STREAM_CREATION_ERROR:
    return "ERR_H3_STREAM_CREATION_ERROR";
  case NGHTTP3_ERR_H3_EXCESSIVE_LOAD:
    return "ERR_H3_EXCESSIVE_LOAD";
  case NGHTTP3_ERR_NOMEM:
    return "ERR_NOMEM";
  case NGHTTP3_ERR_CALLBACK_FAILURE:
    return "ERR_CALLBACK_FAILURE";
  default:
    return "(unknown)";
  }
}

uint64_t nghttp3_err_infer_quic_app_error_code(int liberr) {
  switch (liberr) {
  case 0:
    return NGHTTP3_H3_NO_ERROR;
  case NGHTTP3_ERR_QPACK_DECOMPRESSION_FAILED:
    return NGHTTP3_QPACK_DECOMPRESSION_FAILED;
  case NGHTTP3_ERR_QPACK_ENCODER_STREAM_ERROR:
    return NGHTTP3_QPACK_ENCODER_STREAM_ERROR;
  case NGHTTP3_ERR_QPACK_DECODER_STREAM_ERROR:
    return NGHTTP3_QPACK_DECODER_STREAM_ERROR;
  case NGHTTP3_ERR_H3_FRAME_UNEXPECTED:
    return NGHTTP3_H3_FRAME_UNEXPECTED;
  case NGHTTP3_ERR_H3_FRAME_ERROR:
    return NGHTTP3_H3_FRAME_ERROR;
  case NGHTTP3_ERR_H3_MISSING_SETTINGS:
    return NGHTTP3_H3_MISSING_SETTINGS;
  case NGHTTP3_ERR_H3_INTERNAL_ERROR:
  case NGHTTP3_ERR_NOMEM:
  case NGHTTP3_ERR_CALLBACK_FAILURE:
  case NGHTTP3_ERR_QPACK_FATAL:
  case NGHTTP3_ERR_QPACK_HEADER_TOO_LARGE:
  case NGHTTP3_ERR_STREAM_DATA_OVERFLOW:
    return NGHTTP3_H3_INTERNAL_ERROR;
  case NGHTTP3_ERR_H3_CLOSED_CRITICAL_STREAM:
    return NGHTTP3_H3_CLOSED_CRITICAL_STREAM;
  case NGHTTP3_ERR_H3_GENERAL_PROTOCOL_ERROR:
    return NGHTTP3_H3_GENERAL_PROTOCOL_ERROR;
  case NGHTTP3_ERR_H3_ID_ERROR:
    return NGHTTP3_H3_ID_ERROR;
  case NGHTTP3_ERR_H3_SETTINGS_ERROR:
    return NGHTTP3_H3_SETTINGS_ERROR;
  case NGHTTP3_ERR_H3_STREAM_CREATION_ERROR:
    return NGHTTP3_H3_STREAM_CREATION_ERROR;
  case NGHTTP3_ERR_H3_EXCESSIVE_LOAD:
    return NGHTTP3_H3_EXCESSIVE_LOAD;
  case NGHTTP3_ERR_MALFORMED_HTTP_HEADER:
  case NGHTTP3_ERR_MALFORMED_HTTP_MESSAGING:
    return NGHTTP3_H3_MESSAGE_ERROR;
  default:
    return NGHTTP3_H3_GENERAL_PROTOCOL_ERROR;
  }
}

int nghttp3_err_is_fatal(int liberr) { return liberr < NGHTTP3_ERR_FATAL; }