• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com)
3 //
4 // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 //
7 // Official repository: https://github.com/boostorg/beast
8 //
9 
10 #ifndef BOOST_BEAST_HTTP_ERROR_HPP
11 #define BOOST_BEAST_HTTP_ERROR_HPP
12 
13 #include <boost/beast/core/detail/config.hpp>
14 #include <boost/beast/core/error.hpp>
15 
16 namespace boost {
17 namespace beast {
18 namespace http {
19 
20 /// Error codes returned from HTTP algorithms and operations.
21 enum class error
22 {
23     /** The end of the stream was reached.
24 
25         This error is returned when attempting to read HTTP data,
26         and the stream returns the error `net::error::eof`
27         before any octets corresponding to a new HTTP message have
28         been received.
29     */
30     end_of_stream = 1,
31 
32     /** The incoming message is incomplete.
33 
34         This happens when the end of stream is reached during
35         parsing and some octets have been received, but not the
36         entire message.
37     */
38     partial_message,
39 
40     /** Additional buffers are required.
41 
42         This error is returned during parsing when additional
43         octets are needed. The caller should append more data
44         to the existing buffer and retry the parse operaetion.
45     */
46     need_more,
47 
48     /** An unexpected body was encountered during parsing.
49 
50         This error is returned when attempting to parse body
51         octets into a message container which has the
52         @ref empty_body body type.
53 
54         @see empty_body
55     */
56     unexpected_body,
57 
58     /** Additional buffers are required.
59 
60         This error is returned under the following conditions:
61 
62         @li During serialization when using @ref buffer_body.
63         The caller should update the body to point to a new
64         buffer or indicate that there are no more octets in
65         the body.
66 
67         @li During parsing when using @ref buffer_body.
68         The caller should update the body to point to a new
69         storage area to receive additional body octets.
70     */
71     need_buffer,
72 
73     /** The end of a chunk was reached
74     */
75     end_of_chunk,
76 
77     /** Buffer maximum exceeded.
78 
79         This error is returned when reading HTTP content
80         into a dynamic buffer, and the operation would
81         exceed the maximum size of the buffer.
82     */
83     buffer_overflow,
84 
85     /** Header limit exceeded.
86 
87         The parser detected an incoming message header which
88         exceeded a configured limit.
89     */
90     header_limit,
91 
92     /** Body limit exceeded.
93 
94         The parser detected an incoming message body which
95         exceeded a configured limit.
96     */
97     body_limit,
98 
99     /** A memory allocation failed.
100 
101         When basic_fields throws std::bad_alloc, it is
102         converted into this error by @ref parser.
103     */
104     bad_alloc,
105 
106     //
107     // (parser errors)
108     //
109 
110     /// The line ending was malformed
111     bad_line_ending,
112 
113     /// The method is invalid.
114     bad_method,
115 
116     /// The request-target is invalid.
117     bad_target,
118 
119     /// The HTTP-version is invalid.
120     bad_version,
121 
122     /// The status-code is invalid.
123     bad_status,
124 
125     /// The reason-phrase is invalid.
126     bad_reason,
127 
128     /// The field name is invalid.
129     bad_field,
130 
131     /// The field value is invalid.
132     bad_value,
133 
134     /// The Content-Length is invalid.
135     bad_content_length,
136 
137     /// The Transfer-Encoding is invalid.
138     bad_transfer_encoding,
139 
140     /// The chunk syntax is invalid.
141     bad_chunk,
142 
143     /// The chunk extension is invalid.
144     bad_chunk_extension,
145 
146     /// An obs-fold exceeded an internal limit.
147     bad_obs_fold,
148 
149     /** The parser is stale.
150 
151         This happens when attempting to re-use a parser that has
152         already completed parsing a message. Programs must construct
153         a new parser for each message. This can be easily done by
154         storing the parser in an boost or std::optional container.
155     */
156     stale_parser,
157 
158     /** The message body is shorter than expected.
159 
160         This error is returned by @ref file_body when an unexpected
161         unexpected end-of-file condition is encountered while trying
162         to read from the file.
163     */
164     short_read
165 };
166 
167 } // http
168 } // beast
169 } // boost
170 
171 #include <boost/beast/http/impl/error.hpp>
172 #ifdef BOOST_BEAST_HEADER_ONLY
173 #include <boost/beast/http/impl/error.ipp>
174 #endif
175 
176 #endif
177