chore(error): add specific user error for responding with 1xx status code
This commit is contained in:
		
							
								
								
									
										12
									
								
								src/error.rs
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								src/error.rs
									
									
									
									
									
								
							| @@ -61,6 +61,8 @@ pub(crate) enum Kind { | |||||||
|     UnsupportedVersion, |     UnsupportedVersion, | ||||||
|     /// User tried to create a CONNECT Request with the Client. |     /// User tried to create a CONNECT Request with the Client. | ||||||
|     UnsupportedRequestMethod, |     UnsupportedRequestMethod, | ||||||
|  |     /// User tried to respond with a 1xx (not 101) response code. | ||||||
|  |     UnsupportedStatusCode, | ||||||
|     /// User tried to send a Request with Client with non-absolute URI. |     /// User tried to send a Request with Client with non-absolute URI. | ||||||
|     AbsoluteUriRequired, |     AbsoluteUriRequired, | ||||||
|  |  | ||||||
| @@ -119,6 +121,7 @@ impl Error { | |||||||
|             Kind::Closed | |             Kind::Closed | | ||||||
|             Kind::UnsupportedVersion | |             Kind::UnsupportedVersion | | ||||||
|             Kind::UnsupportedRequestMethod | |             Kind::UnsupportedRequestMethod | | ||||||
|  |             Kind::UnsupportedStatusCode | | ||||||
|             Kind::AbsoluteUriRequired | |             Kind::AbsoluteUriRequired | | ||||||
|             Kind::NoUpgrade | |             Kind::NoUpgrade | | ||||||
|             Kind::Execute => true, |             Kind::Execute => true, | ||||||
| @@ -178,10 +181,6 @@ impl Error { | |||||||
|         Error::new(Kind::Parse(Parse::Header), None) |         Error::new(Kind::Parse(Parse::Header), None) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     pub(crate) fn new_status() -> Error { |  | ||||||
|         Error::new(Kind::Parse(Parse::Status), None) |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     pub(crate) fn new_version_h2() -> Error { |     pub(crate) fn new_version_h2() -> Error { | ||||||
|         Error::new(Kind::Parse(Parse::VersionH2), None) |         Error::new(Kind::Parse(Parse::VersionH2), None) | ||||||
|     } |     } | ||||||
| @@ -227,6 +226,10 @@ impl Error { | |||||||
|         Error::new(Kind::UnsupportedRequestMethod, None) |         Error::new(Kind::UnsupportedRequestMethod, None) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     pub(crate) fn new_user_unsupported_status_code() -> Error { | ||||||
|  |         Error::new(Kind::UnsupportedStatusCode, None) | ||||||
|  |     } | ||||||
|  |  | ||||||
|     pub(crate) fn new_user_absolute_uri_required() -> Error { |     pub(crate) fn new_user_absolute_uri_required() -> Error { | ||||||
|         Error::new(Kind::AbsoluteUriRequired, None) |         Error::new(Kind::AbsoluteUriRequired, None) | ||||||
|     } |     } | ||||||
| @@ -310,6 +313,7 @@ impl StdError for Error { | |||||||
|             Kind::Http2 => "http2 general error", |             Kind::Http2 => "http2 general error", | ||||||
|             Kind::UnsupportedVersion => "request has unsupported HTTP version", |             Kind::UnsupportedVersion => "request has unsupported HTTP version", | ||||||
|             Kind::UnsupportedRequestMethod => "request has unsupported HTTP method", |             Kind::UnsupportedRequestMethod => "request has unsupported HTTP method", | ||||||
|  |             Kind::UnsupportedStatusCode => "response has 1xx status code, not supported by server", | ||||||
|             Kind::AbsoluteUriRequired => "client requires absolute-form URIs", |             Kind::AbsoluteUriRequired => "client requires absolute-form URIs", | ||||||
|             Kind::NoUpgrade => "no upgrade available", |             Kind::NoUpgrade => "no upgrade available", | ||||||
|             Kind::ManualUpgrade => "upgrade expected but low level API in use", |             Kind::ManualUpgrade => "upgrade expected but low level API in use", | ||||||
|   | |||||||
| @@ -212,8 +212,7 @@ impl Http1Transaction for Server { | |||||||
|             *msg.head = MessageHead::default(); |             *msg.head = MessageHead::default(); | ||||||
|             msg.head.subject = StatusCode::INTERNAL_SERVER_ERROR; |             msg.head.subject = StatusCode::INTERNAL_SERVER_ERROR; | ||||||
|             msg.body = None; |             msg.body = None; | ||||||
|             //TODO: change this to a more descriptive error than just a parse error |             (Err(::Error::new_user_unsupported_status_code()), true) | ||||||
|             (Err(::Error::new_status()), true) |  | ||||||
|         } else { |         } else { | ||||||
|             (Ok(()), !msg.keep_alive) |             (Ok(()), !msg.keep_alive) | ||||||
|         }; |         }; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user