rustfmt: add trailing commas in match arms, set fn call to block stle (#85)
This commit is contained in:
		
				
					committed by
					
						 Carl Lerche
						Carl Lerche
					
				
			
			
				
	
			
			
			
						parent
						
							de1edf4873
						
					
				
				
					commit
					f7d14861e5
				
			| @@ -186,7 +186,7 @@ impl Decoder { | ||||
|                     trace!("    Indexed; rem={:?}", src.remaining()); | ||||
|                     can_resize = false; | ||||
|                     f(self.decode_indexed(src)?); | ||||
|                 } | ||||
|                 }, | ||||
|                 LiteralWithIndexing => { | ||||
|                     trace!("    LiteralWithIndexing; rem={:?}", src.remaining()); | ||||
|                     can_resize = false; | ||||
| @@ -196,13 +196,13 @@ impl Decoder { | ||||
|                     self.table.insert(entry.clone()); | ||||
|  | ||||
|                     f(entry); | ||||
|                 } | ||||
|                 }, | ||||
|                 LiteralWithoutIndexing => { | ||||
|                     trace!("    LiteralWithoutIndexing; rem={:?}", src.remaining()); | ||||
|                     can_resize = false; | ||||
|                     let entry = self.decode_literal(src, false)?; | ||||
|                     f(entry); | ||||
|                 } | ||||
|                 }, | ||||
|                 LiteralNeverIndexed => { | ||||
|                     trace!("    LiteralNeverIndexed; rem={:?}", src.remaining()); | ||||
|                     can_resize = false; | ||||
| @@ -211,7 +211,7 @@ impl Decoder { | ||||
|                     // TODO: Track that this should never be indexed | ||||
|  | ||||
|                     f(entry); | ||||
|                 } | ||||
|                 }, | ||||
|                 SizeUpdate => { | ||||
|                     trace!("    SizeUpdate; rem={:?}", src.remaining()); | ||||
|                     if !can_resize { | ||||
| @@ -220,7 +220,7 @@ impl Decoder { | ||||
|  | ||||
|                     // Handle the dynamic table size update | ||||
|                     self.process_size_update(src)?; | ||||
|                 } | ||||
|                 }, | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @@ -234,9 +234,11 @@ impl Decoder { | ||||
|             return Err(DecoderError::InvalidMaxDynamicSize); | ||||
|         } | ||||
|  | ||||
|         debug!("Decoder changed max table size from {} to {}", | ||||
|                self.table.size(), | ||||
|                new_size); | ||||
|         debug!( | ||||
|             "Decoder changed max table size from {} to {}", | ||||
|             self.table.size(), | ||||
|             new_size | ||||
|         ); | ||||
|  | ||||
|         self.table.set_max_size(new_size); | ||||
|  | ||||
| @@ -287,9 +289,11 @@ impl Decoder { | ||||
|         let len = decode_int(buf, 7)?; | ||||
|  | ||||
|         if len > buf.remaining() { | ||||
|             trace!("decode_string underflow; len={}; remaining={}", | ||||
|                    len, | ||||
|                    buf.remaining()); | ||||
|             trace!( | ||||
|                 "decode_string underflow; len={}; remaining={}", | ||||
|                 len, | ||||
|                 buf.remaining() | ||||
|             ); | ||||
|             return Err(DecoderError::StringUnderflow); | ||||
|         } | ||||
|  | ||||
| @@ -489,7 +493,7 @@ impl Table { | ||||
|                         // Can never happen as the size of the table must reach | ||||
|                         // 0 by the time we've exhausted all elements. | ||||
|                         panic!("Size of table != 0, but no headers left!"); | ||||
|                     } | ||||
|                     }, | ||||
|                 }; | ||||
|  | ||||
|                 self.size -= last.len(); | ||||
| @@ -563,288 +567,194 @@ pub fn get_static(idx: usize) -> Header { | ||||
|         12 => Header::Status(StatusCode::BAD_REQUEST), | ||||
|         13 => Header::Status(StatusCode::NOT_FOUND), | ||||
|         14 => Header::Status(StatusCode::INTERNAL_SERVER_ERROR), | ||||
|         15 => { | ||||
|             Header::Field { | ||||
|                 name: header::ACCEPT_CHARSET, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         16 => { | ||||
|             Header::Field { | ||||
|                 name: header::ACCEPT_ENCODING, | ||||
|                 value: HeaderValue::from_static("gzip, deflate"), | ||||
|             } | ||||
|         } | ||||
|         17 => { | ||||
|             Header::Field { | ||||
|                 name: header::ACCEPT_LANGUAGE, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         18 => { | ||||
|             Header::Field { | ||||
|                 name: header::ACCEPT_RANGES, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         19 => { | ||||
|             Header::Field { | ||||
|                 name: header::ACCEPT, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         20 => { | ||||
|             Header::Field { | ||||
|                 name: header::ACCESS_CONTROL_ALLOW_ORIGIN, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         21 => { | ||||
|             Header::Field { | ||||
|                 name: header::AGE, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         22 => { | ||||
|             Header::Field { | ||||
|                 name: header::ALLOW, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         23 => { | ||||
|             Header::Field { | ||||
|                 name: header::AUTHORIZATION, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         24 => { | ||||
|             Header::Field { | ||||
|                 name: header::CACHE_CONTROL, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         25 => { | ||||
|             Header::Field { | ||||
|                 name: header::CONTENT_DISPOSITION, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         26 => { | ||||
|             Header::Field { | ||||
|                 name: header::CONTENT_ENCODING, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         27 => { | ||||
|             Header::Field { | ||||
|                 name: header::CONTENT_LANGUAGE, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         28 => { | ||||
|             Header::Field { | ||||
|                 name: header::CONTENT_LENGTH, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         29 => { | ||||
|             Header::Field { | ||||
|                 name: header::CONTENT_LOCATION, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         30 => { | ||||
|             Header::Field { | ||||
|                 name: header::CONTENT_RANGE, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         31 => { | ||||
|             Header::Field { | ||||
|                 name: header::CONTENT_TYPE, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         32 => { | ||||
|             Header::Field { | ||||
|                 name: header::COOKIE, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         33 => { | ||||
|             Header::Field { | ||||
|                 name: header::DATE, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         34 => { | ||||
|             Header::Field { | ||||
|                 name: header::ETAG, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         35 => { | ||||
|             Header::Field { | ||||
|                 name: header::EXPECT, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         36 => { | ||||
|             Header::Field { | ||||
|                 name: header::EXPIRES, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         37 => { | ||||
|             Header::Field { | ||||
|                 name: header::FROM, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         38 => { | ||||
|             Header::Field { | ||||
|                 name: header::HOST, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         39 => { | ||||
|             Header::Field { | ||||
|                 name: header::IF_MATCH, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         40 => { | ||||
|             Header::Field { | ||||
|                 name: header::IF_MODIFIED_SINCE, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         41 => { | ||||
|             Header::Field { | ||||
|                 name: header::IF_NONE_MATCH, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         42 => { | ||||
|             Header::Field { | ||||
|                 name: header::IF_RANGE, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         43 => { | ||||
|             Header::Field { | ||||
|                 name: header::IF_UNMODIFIED_SINCE, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         44 => { | ||||
|             Header::Field { | ||||
|                 name: header::LAST_MODIFIED, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         45 => { | ||||
|             Header::Field { | ||||
|                 name: header::LINK, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         46 => { | ||||
|             Header::Field { | ||||
|                 name: header::LOCATION, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         47 => { | ||||
|             Header::Field { | ||||
|                 name: header::MAX_FORWARDS, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         48 => { | ||||
|             Header::Field { | ||||
|                 name: header::PROXY_AUTHENTICATE, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         49 => { | ||||
|             Header::Field { | ||||
|                 name: header::PROXY_AUTHORIZATION, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         50 => { | ||||
|             Header::Field { | ||||
|                 name: header::RANGE, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         51 => { | ||||
|             Header::Field { | ||||
|                 name: header::REFERER, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         52 => { | ||||
|             Header::Field { | ||||
|                 name: header::REFRESH, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         53 => { | ||||
|             Header::Field { | ||||
|                 name: header::RETRY_AFTER, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         54 => { | ||||
|             Header::Field { | ||||
|                 name: header::SERVER, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         55 => { | ||||
|             Header::Field { | ||||
|                 name: header::SET_COOKIE, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         56 => { | ||||
|             Header::Field { | ||||
|                 name: header::STRICT_TRANSPORT_SECURITY, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         57 => { | ||||
|             Header::Field { | ||||
|                 name: header::TRANSFER_ENCODING, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         58 => { | ||||
|             Header::Field { | ||||
|                 name: header::USER_AGENT, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         59 => { | ||||
|             Header::Field { | ||||
|                 name: header::VARY, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         60 => { | ||||
|             Header::Field { | ||||
|                 name: header::VIA, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         61 => { | ||||
|             Header::Field { | ||||
|                 name: header::WWW_AUTHENTICATE, | ||||
|                 value: HeaderValue::from_static(""), | ||||
|             } | ||||
|         } | ||||
|         15 => Header::Field { | ||||
|             name: header::ACCEPT_CHARSET, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         16 => Header::Field { | ||||
|             name: header::ACCEPT_ENCODING, | ||||
|             value: HeaderValue::from_static("gzip, deflate"), | ||||
|         }, | ||||
|         17 => Header::Field { | ||||
|             name: header::ACCEPT_LANGUAGE, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         18 => Header::Field { | ||||
|             name: header::ACCEPT_RANGES, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         19 => Header::Field { | ||||
|             name: header::ACCEPT, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         20 => Header::Field { | ||||
|             name: header::ACCESS_CONTROL_ALLOW_ORIGIN, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         21 => Header::Field { | ||||
|             name: header::AGE, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         22 => Header::Field { | ||||
|             name: header::ALLOW, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         23 => Header::Field { | ||||
|             name: header::AUTHORIZATION, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         24 => Header::Field { | ||||
|             name: header::CACHE_CONTROL, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         25 => Header::Field { | ||||
|             name: header::CONTENT_DISPOSITION, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         26 => Header::Field { | ||||
|             name: header::CONTENT_ENCODING, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         27 => Header::Field { | ||||
|             name: header::CONTENT_LANGUAGE, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         28 => Header::Field { | ||||
|             name: header::CONTENT_LENGTH, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         29 => Header::Field { | ||||
|             name: header::CONTENT_LOCATION, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         30 => Header::Field { | ||||
|             name: header::CONTENT_RANGE, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         31 => Header::Field { | ||||
|             name: header::CONTENT_TYPE, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         32 => Header::Field { | ||||
|             name: header::COOKIE, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         33 => Header::Field { | ||||
|             name: header::DATE, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         34 => Header::Field { | ||||
|             name: header::ETAG, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         35 => Header::Field { | ||||
|             name: header::EXPECT, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         36 => Header::Field { | ||||
|             name: header::EXPIRES, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         37 => Header::Field { | ||||
|             name: header::FROM, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         38 => Header::Field { | ||||
|             name: header::HOST, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         39 => Header::Field { | ||||
|             name: header::IF_MATCH, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         40 => Header::Field { | ||||
|             name: header::IF_MODIFIED_SINCE, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         41 => Header::Field { | ||||
|             name: header::IF_NONE_MATCH, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         42 => Header::Field { | ||||
|             name: header::IF_RANGE, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         43 => Header::Field { | ||||
|             name: header::IF_UNMODIFIED_SINCE, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         44 => Header::Field { | ||||
|             name: header::LAST_MODIFIED, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         45 => Header::Field { | ||||
|             name: header::LINK, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         46 => Header::Field { | ||||
|             name: header::LOCATION, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         47 => Header::Field { | ||||
|             name: header::MAX_FORWARDS, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         48 => Header::Field { | ||||
|             name: header::PROXY_AUTHENTICATE, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         49 => Header::Field { | ||||
|             name: header::PROXY_AUTHORIZATION, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         50 => Header::Field { | ||||
|             name: header::RANGE, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         51 => Header::Field { | ||||
|             name: header::REFERER, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         52 => Header::Field { | ||||
|             name: header::REFRESH, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         53 => Header::Field { | ||||
|             name: header::RETRY_AFTER, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         54 => Header::Field { | ||||
|             name: header::SERVER, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         55 => Header::Field { | ||||
|             name: header::SET_COOKIE, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         56 => Header::Field { | ||||
|             name: header::STRICT_TRANSPORT_SECURITY, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         57 => Header::Field { | ||||
|             name: header::TRANSFER_ENCODING, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         58 => Header::Field { | ||||
|             name: header::USER_AGENT, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         59 => Header::Field { | ||||
|             name: header::VARY, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         60 => Header::Field { | ||||
|             name: header::VIA, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         61 => Header::Field { | ||||
|             name: header::WWW_AUTHENTICATE, | ||||
|             value: HeaderValue::from_static(""), | ||||
|         }, | ||||
|         _ => unreachable!(), | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -47,31 +47,27 @@ impl Encoder { | ||||
|     #[allow(dead_code)] | ||||
|     pub fn update_max_size(&mut self, val: usize) { | ||||
|         match self.size_update { | ||||
|             Some(SizeUpdate::One(old)) => { | ||||
|                 if val > old { | ||||
|                     if old > self.table.max_size() { | ||||
|                         self.size_update = Some(SizeUpdate::One(val)); | ||||
|                     } else { | ||||
|                         self.size_update = Some(SizeUpdate::Two(old, val)); | ||||
|                     } | ||||
|                 } else { | ||||
|                     self.size_update = Some(SizeUpdate::One(val)); | ||||
|                 } | ||||
|             } | ||||
|             Some(SizeUpdate::Two(min, _)) => { | ||||
|                 if val < min { | ||||
|             Some(SizeUpdate::One(old)) => if val > old { | ||||
|                 if old > self.table.max_size() { | ||||
|                     self.size_update = Some(SizeUpdate::One(val)); | ||||
|                 } else { | ||||
|                     self.size_update = Some(SizeUpdate::Two(min, val)); | ||||
|                     self.size_update = Some(SizeUpdate::Two(old, val)); | ||||
|                 } | ||||
|             } | ||||
|             } else { | ||||
|                 self.size_update = Some(SizeUpdate::One(val)); | ||||
|             }, | ||||
|             Some(SizeUpdate::Two(min, _)) => if val < min { | ||||
|                 self.size_update = Some(SizeUpdate::One(val)); | ||||
|             } else { | ||||
|                 self.size_update = Some(SizeUpdate::Two(min, val)); | ||||
|             }, | ||||
|             None => { | ||||
|                 if val != self.table.max_size() { | ||||
|                     // Don't bother writing a frame if the value already matches | ||||
|                     // the table's max size. | ||||
|                     self.size_update = Some(SizeUpdate::One(val)); | ||||
|                 } | ||||
|             } | ||||
|             }, | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -124,13 +120,13 @@ impl Encoder { | ||||
|                     if res.is_err() { | ||||
|                         dst.truncate(len); | ||||
|                         return Encode::Partial(EncodeState { | ||||
|                                                    index: index, | ||||
|                                                    value: None, | ||||
|                                                }); | ||||
|                             index: index, | ||||
|                             value: None, | ||||
|                         }); | ||||
|                     } | ||||
|  | ||||
|                     last_index = Some(index); | ||||
|                 } | ||||
|                 }, | ||||
|                 // The header does not have an associated name. This means that | ||||
|                 // the name is the same as the previously yielded header. In | ||||
|                 // which case, we skip table lookup and just use the same index | ||||
| @@ -142,11 +138,11 @@ impl Encoder { | ||||
|                     if res.is_err() { | ||||
|                         dst.truncate(len); | ||||
|                         return Encode::Partial(EncodeState { | ||||
|                                                    index: last_index.unwrap(), | ||||
|                                                    value: Some(value), | ||||
|                                                }); | ||||
|                             index: last_index.unwrap(), | ||||
|                             value: Some(value), | ||||
|                         }); | ||||
|                     } | ||||
|                 } | ||||
|                 }, | ||||
|             }; | ||||
|         } | ||||
|  | ||||
| @@ -158,14 +154,14 @@ impl Encoder { | ||||
|             Some(SizeUpdate::One(val)) => { | ||||
|                 self.table.resize(val); | ||||
|                 encode_size_update(val, dst)?; | ||||
|             } | ||||
|             }, | ||||
|             Some(SizeUpdate::Two(min, max)) => { | ||||
|                 self.table.resize(min); | ||||
|                 self.table.resize(max); | ||||
|                 encode_size_update(min, dst)?; | ||||
|                 encode_size_update(max, dst)?; | ||||
|             } | ||||
|             None => {} | ||||
|             }, | ||||
|             None => {}, | ||||
|         } | ||||
|  | ||||
|         Ok(()) | ||||
| @@ -175,12 +171,12 @@ impl Encoder { | ||||
|         match *index { | ||||
|             Index::Indexed(idx, _) => { | ||||
|                 encode_int(idx, 7, 0x80, dst)?; | ||||
|             } | ||||
|             }, | ||||
|             Index::Name(idx, _) => { | ||||
|                 let header = self.table.resolve(&index); | ||||
|  | ||||
|                 encode_not_indexed(idx, header.value_slice(), header.is_sensitive(), dst)?; | ||||
|             } | ||||
|             }, | ||||
|             Index::Inserted(_) => { | ||||
|                 let header = self.table.resolve(&index); | ||||
|  | ||||
| @@ -194,7 +190,7 @@ impl Encoder { | ||||
|  | ||||
|                 encode_str(header.name().as_slice(), dst)?; | ||||
|                 encode_str(header.value_slice(), dst)?; | ||||
|             } | ||||
|             }, | ||||
|             Index::InsertedValue(idx, _) => { | ||||
|                 let header = self.table.resolve(&index); | ||||
|  | ||||
| @@ -202,15 +198,17 @@ impl Encoder { | ||||
|  | ||||
|                 encode_int(idx, 6, 0b01000000, dst)?; | ||||
|                 encode_str(header.value_slice(), dst)?; | ||||
|             } | ||||
|             }, | ||||
|             Index::NotIndexed(_) => { | ||||
|                 let header = self.table.resolve(&index); | ||||
|  | ||||
|                 encode_not_indexed2(header.name().as_slice(), | ||||
|                                     header.value_slice(), | ||||
|                                     header.is_sensitive(), | ||||
|                                     dst)?; | ||||
|             } | ||||
|                 encode_not_indexed2( | ||||
|                     header.name().as_slice(), | ||||
|                     header.value_slice(), | ||||
|                     header.is_sensitive(), | ||||
|                     dst, | ||||
|                 )?; | ||||
|             }, | ||||
|         } | ||||
|  | ||||
|         Ok(()) | ||||
| @@ -230,15 +228,17 @@ impl Encoder { | ||||
|                 let idx = self.table.resolve_idx(last); | ||||
|  | ||||
|                 encode_not_indexed(idx, value.as_ref(), value.is_sensitive(), dst)?; | ||||
|             } | ||||
|             }, | ||||
|             Index::NotIndexed(_) => { | ||||
|                 let last = self.table.resolve(last); | ||||
|  | ||||
|                 encode_not_indexed2(last.name().as_slice(), | ||||
|                                     value.as_ref(), | ||||
|                                     value.is_sensitive(), | ||||
|                                     dst)?; | ||||
|             } | ||||
|                 encode_not_indexed2( | ||||
|                     last.name().as_slice(), | ||||
|                     value.as_ref(), | ||||
|                     value.is_sensitive(), | ||||
|                     dst, | ||||
|                 )?; | ||||
|             }, | ||||
|         } | ||||
|  | ||||
|         Ok(()) | ||||
| @@ -570,8 +570,10 @@ mod test { | ||||
|         // Using the name component of a previously indexed header (without | ||||
|         // sensitive flag set) | ||||
|  | ||||
|         let _ = encode(&mut encoder, | ||||
|                        vec![self::header("my-password", "not-so-secret")]); | ||||
|         let _ = encode( | ||||
|             &mut encoder, | ||||
|             vec![self::header("my-password", "not-so-secret")], | ||||
|         ); | ||||
|  | ||||
|         let name = "my-password".parse().unwrap(); | ||||
|         let mut value = HeaderValue::from_bytes(b"12345").unwrap(); | ||||
| @@ -794,7 +796,7 @@ mod test { | ||||
|         dst.clear(); | ||||
|  | ||||
|         match encoder.encode(Some(resume), &mut input, &mut dst) { | ||||
|             Encode::Full => {} | ||||
|             Encode::Full => {}, | ||||
|             _ => panic!(), | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -38,25 +38,23 @@ impl Header<Option<HeaderName>> { | ||||
|         use self::Header::*; | ||||
|  | ||||
|         Ok(match self { | ||||
|                Field { | ||||
|                    name: Some(n), | ||||
|                    value, | ||||
|                } => { | ||||
|                    Field { | ||||
|                        name: n, | ||||
|                        value: value, | ||||
|                    } | ||||
|                } | ||||
|                Field { | ||||
|                    name: None, | ||||
|                    value, | ||||
|                } => return Err(value), | ||||
|                Authority(v) => Authority(v), | ||||
|                Method(v) => Method(v), | ||||
|                Scheme(v) => Scheme(v), | ||||
|                Path(v) => Path(v), | ||||
|                Status(v) => Status(v), | ||||
|            }) | ||||
|             Field { | ||||
|                 name: Some(n), | ||||
|                 value, | ||||
|             } => Field { | ||||
|                 name: n, | ||||
|                 value: value, | ||||
|             }, | ||||
|             Field { | ||||
|                 name: None, | ||||
|                 value, | ||||
|             } => return Err(value), | ||||
|             Authority(v) => Authority(v), | ||||
|             Method(v) => Method(v), | ||||
|             Scheme(v) => Scheme(v), | ||||
|             Path(v) => Path(v), | ||||
|             Status(v) => Status(v), | ||||
|         }) | ||||
|     } | ||||
| } | ||||
|  | ||||
| @@ -67,23 +65,23 @@ impl Header { | ||||
|                 b"authority" => { | ||||
|                     let value = String::try_from(value)?; | ||||
|                     Ok(Header::Authority(value)) | ||||
|                 } | ||||
|                 }, | ||||
|                 b"method" => { | ||||
|                     let method = Method::from_bytes(&value)?; | ||||
|                     Ok(Header::Method(method)) | ||||
|                 } | ||||
|                 }, | ||||
|                 b"scheme" => { | ||||
|                     let value = String::try_from(value)?; | ||||
|                     Ok(Header::Scheme(value)) | ||||
|                 } | ||||
|                 }, | ||||
|                 b"path" => { | ||||
|                     let value = String::try_from(value)?; | ||||
|                     Ok(Header::Path(value)) | ||||
|                 } | ||||
|                 }, | ||||
|                 b"status" => { | ||||
|                     let status = StatusCode::from_bytes(&value)?; | ||||
|                     Ok(Header::Status(status)) | ||||
|                 } | ||||
|                 }, | ||||
|                 _ => Err(DecoderError::InvalidPseudoheader), | ||||
|             } | ||||
|         } else { | ||||
| @@ -92,9 +90,9 @@ impl Header { | ||||
|             let value = HeaderValue::from_bytes(&value)?; | ||||
|  | ||||
|             Ok(Header::Field { | ||||
|                    name: name, | ||||
|                    value: value, | ||||
|                }) | ||||
|                 name: name, | ||||
|                 value: value, | ||||
|             }) | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -151,37 +149,27 @@ impl Header { | ||||
|                     } => a == value, | ||||
|                     _ => false, | ||||
|                 } | ||||
|             } | ||||
|             Header::Authority(ref a) => { | ||||
|                 match *other { | ||||
|                     Header::Authority(ref b) => a == b, | ||||
|                     _ => false, | ||||
|                 } | ||||
|             } | ||||
|             Header::Method(ref a) => { | ||||
|                 match *other { | ||||
|                     Header::Method(ref b) => a == b, | ||||
|                     _ => false, | ||||
|                 } | ||||
|             } | ||||
|             Header::Scheme(ref a) => { | ||||
|                 match *other { | ||||
|                     Header::Scheme(ref b) => a == b, | ||||
|                     _ => false, | ||||
|                 } | ||||
|             } | ||||
|             Header::Path(ref a) => { | ||||
|                 match *other { | ||||
|                     Header::Path(ref b) => a == b, | ||||
|                     _ => false, | ||||
|                 } | ||||
|             } | ||||
|             Header::Status(ref a) => { | ||||
|                 match *other { | ||||
|                     Header::Status(ref b) => a == b, | ||||
|                     _ => false, | ||||
|                 } | ||||
|             } | ||||
|             }, | ||||
|             Header::Authority(ref a) => match *other { | ||||
|                 Header::Authority(ref b) => a == b, | ||||
|                 _ => false, | ||||
|             }, | ||||
|             Header::Method(ref a) => match *other { | ||||
|                 Header::Method(ref b) => a == b, | ||||
|                 _ => false, | ||||
|             }, | ||||
|             Header::Scheme(ref a) => match *other { | ||||
|                 Header::Scheme(ref b) => a == b, | ||||
|                 _ => false, | ||||
|             }, | ||||
|             Header::Path(ref a) => match *other { | ||||
|                 Header::Path(ref b) => a == b, | ||||
|                 _ => false, | ||||
|             }, | ||||
|             Header::Status(ref a) => match *other { | ||||
|                 Header::Status(ref b) => a == b, | ||||
|                 _ => false, | ||||
|             }, | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -201,20 +189,18 @@ impl Header { | ||||
|         match *self { | ||||
|             Header::Field { | ||||
|                 ref name, .. | ||||
|             } => { | ||||
|                 match *name { | ||||
|                     header::AGE | | ||||
|                     header::AUTHORIZATION | | ||||
|                     header::CONTENT_LENGTH | | ||||
|                     header::ETAG | | ||||
|                     header::IF_MODIFIED_SINCE | | ||||
|                     header::IF_NONE_MATCH | | ||||
|                     header::LOCATION | | ||||
|                     header::COOKIE | | ||||
|                     header::SET_COOKIE => true, | ||||
|                     _ => false, | ||||
|                 } | ||||
|             } | ||||
|             } => match *name { | ||||
|                 header::AGE | | ||||
|                 header::AUTHORIZATION | | ||||
|                 header::CONTENT_LENGTH | | ||||
|                 header::ETAG | | ||||
|                 header::IF_MODIFIED_SINCE | | ||||
|                 header::IF_NONE_MATCH | | ||||
|                 header::LOCATION | | ||||
|                 header::COOKIE | | ||||
|                 header::SET_COOKIE => true, | ||||
|                 _ => false, | ||||
|             }, | ||||
|             Header::Path(..) => true, | ||||
|             _ => false, | ||||
|         } | ||||
| @@ -228,12 +214,10 @@ impl From<Header> for Header<Option<HeaderName>> { | ||||
|             Header::Field { | ||||
|                 name, | ||||
|                 value, | ||||
|             } => { | ||||
|                 Header::Field { | ||||
|                     name: Some(name), | ||||
|                     value, | ||||
|                 } | ||||
|             } | ||||
|             } => Header::Field { | ||||
|                 name: Some(name), | ||||
|                 value, | ||||
|             }, | ||||
|             Header::Authority(v) => Header::Authority(v), | ||||
|             Header::Method(v) => Header::Method(v), | ||||
|             Header::Scheme(v) => Header::Scheme(v), | ||||
| @@ -246,12 +230,10 @@ impl From<Header> for Header<Option<HeaderName>> { | ||||
| impl<'a> Name<'a> { | ||||
|     pub fn into_entry(self, value: Bytes) -> Result<Header, DecoderError> { | ||||
|         match self { | ||||
|             Name::Field(name) => { | ||||
|                 Ok(Header::Field { | ||||
|                        name: name.clone(), | ||||
|                        value: HeaderValue::from_bytes(&*value)?, | ||||
|                    }) | ||||
|             } | ||||
|             Name::Field(name) => Ok(Header::Field { | ||||
|                 name: name.clone(), | ||||
|                 value: HeaderValue::from_bytes(&*value)?, | ||||
|             }), | ||||
|             Name::Authority => Ok(Header::Authority(String::try_from(value)?)), | ||||
|             Name::Method => Ok(Header::Method(Method::from_bytes(&*value)?)), | ||||
|             Name::Scheme => Ok(Header::Scheme(String::try_from(value)?)), | ||||
| @@ -262,7 +244,7 @@ impl<'a> Name<'a> { | ||||
|                     // TODO: better error handling | ||||
|                     Err(_) => Err(DecoderError::InvalidStatusCode), | ||||
|                 } | ||||
|             } | ||||
|             }, | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -292,11 +292,13 @@ impl Table { | ||||
|  | ||||
|         let pos_idx = 0usize.wrapping_sub(self.inserted); | ||||
|  | ||||
|         let prev = mem::replace(&mut self.indices[probe], | ||||
|                                 Some(Pos { | ||||
|                                          index: pos_idx, | ||||
|                                          hash: hash, | ||||
|                                      })); | ||||
|         let prev = mem::replace( | ||||
|             &mut self.indices[probe], | ||||
|             Some(Pos { | ||||
|                 index: pos_idx, | ||||
|                 hash: hash, | ||||
|             }), | ||||
|         ); | ||||
|  | ||||
|         if let Some(mut prev) = prev { | ||||
|             // Shift forward | ||||
| @@ -325,10 +327,10 @@ impl Table { | ||||
|         self.inserted = self.inserted.wrapping_add(1); | ||||
|  | ||||
|         self.slots.push_front(Slot { | ||||
|                                   hash: hash, | ||||
|                                   header: header, | ||||
|                                   next: None, | ||||
|                               }); | ||||
|             hash: hash, | ||||
|             header: header, | ||||
|             next: None, | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     pub fn resize(&mut self, size: usize) { | ||||
| @@ -377,12 +379,14 @@ impl Table { | ||||
|         // Update the size | ||||
|         self.size -= slot.header.len(); | ||||
|  | ||||
|         debug_assert_eq!(self.indices | ||||
|                              .iter() | ||||
|                              .filter_map(|p| *p) | ||||
|                              .filter(|p| p.index == pos_idx) | ||||
|                              .count(), | ||||
|                          1); | ||||
|         debug_assert_eq!( | ||||
|             self.indices | ||||
|                 .iter() | ||||
|                 .filter_map(|p| *p) | ||||
|                 .filter(|p| p.index == pos_idx) | ||||
|                 .count(), | ||||
|             1 | ||||
|         ); | ||||
|  | ||||
|         // Find the associated position | ||||
|         probe_loop!(probe < self.indices.len(), { | ||||
| @@ -495,12 +499,12 @@ impl Table { | ||||
|                 } | ||||
|  | ||||
|                 debug_assert!({ | ||||
|                                   let them = self.indices[probe].unwrap(); | ||||
|                                   let their_distance = probe_distance(self.mask, them.hash, probe); | ||||
|                                   let our_distance = probe_distance(self.mask, pos.hash, probe); | ||||
|                     let them = self.indices[probe].unwrap(); | ||||
|                     let their_distance = probe_distance(self.mask, them.hash, probe); | ||||
|                     let our_distance = probe_distance(self.mask, pos.hash, probe); | ||||
|  | ||||
|                                   their_distance >= our_distance | ||||
|                               }); | ||||
|                     their_distance >= our_distance | ||||
|                 }); | ||||
|             }); | ||||
|         } | ||||
|     } | ||||
| @@ -661,97 +665,85 @@ fn index_static(header: &Header) -> Option<(usize, bool)> { | ||||
|         Header::Field { | ||||
|             ref name, | ||||
|             ref value, | ||||
|         } => { | ||||
|             match *name { | ||||
|                 header::ACCEPT_CHARSET => Some((15, false)), | ||||
|                 header::ACCEPT_ENCODING => { | ||||
|                     if value == "gzip, deflate" { | ||||
|                         Some((16, true)) | ||||
|                     } else { | ||||
|                         Some((16, false)) | ||||
|                     } | ||||
|                 } | ||||
|                 header::ACCEPT_LANGUAGE => Some((17, false)), | ||||
|                 header::ACCEPT_RANGES => Some((18, false)), | ||||
|                 header::ACCEPT => Some((19, false)), | ||||
|                 header::ACCESS_CONTROL_ALLOW_ORIGIN => Some((20, false)), | ||||
|                 header::AGE => Some((21, false)), | ||||
|                 header::ALLOW => Some((22, false)), | ||||
|                 header::AUTHORIZATION => Some((23, false)), | ||||
|                 header::CACHE_CONTROL => Some((24, false)), | ||||
|                 header::CONTENT_DISPOSITION => Some((25, false)), | ||||
|                 header::CONTENT_ENCODING => Some((26, false)), | ||||
|                 header::CONTENT_LANGUAGE => Some((27, false)), | ||||
|                 header::CONTENT_LENGTH => Some((28, false)), | ||||
|                 header::CONTENT_LOCATION => Some((29, false)), | ||||
|                 header::CONTENT_RANGE => Some((30, false)), | ||||
|                 header::CONTENT_TYPE => Some((31, false)), | ||||
|                 header::COOKIE => Some((32, false)), | ||||
|                 header::DATE => Some((33, false)), | ||||
|                 header::ETAG => Some((34, false)), | ||||
|                 header::EXPECT => Some((35, false)), | ||||
|                 header::EXPIRES => Some((36, false)), | ||||
|                 header::FROM => Some((37, false)), | ||||
|                 header::HOST => Some((38, false)), | ||||
|                 header::IF_MATCH => Some((39, false)), | ||||
|                 header::IF_MODIFIED_SINCE => Some((40, false)), | ||||
|                 header::IF_NONE_MATCH => Some((41, false)), | ||||
|                 header::IF_RANGE => Some((42, false)), | ||||
|                 header::IF_UNMODIFIED_SINCE => Some((43, false)), | ||||
|                 header::LAST_MODIFIED => Some((44, false)), | ||||
|                 header::LINK => Some((45, false)), | ||||
|                 header::LOCATION => Some((46, false)), | ||||
|                 header::MAX_FORWARDS => Some((47, false)), | ||||
|                 header::PROXY_AUTHENTICATE => Some((48, false)), | ||||
|                 header::PROXY_AUTHORIZATION => Some((49, false)), | ||||
|                 header::RANGE => Some((50, false)), | ||||
|                 header::REFERER => Some((51, false)), | ||||
|                 header::REFRESH => Some((52, false)), | ||||
|                 header::RETRY_AFTER => Some((53, false)), | ||||
|                 header::SERVER => Some((54, false)), | ||||
|                 header::SET_COOKIE => Some((55, false)), | ||||
|                 header::STRICT_TRANSPORT_SECURITY => Some((56, false)), | ||||
|                 header::TRANSFER_ENCODING => Some((57, false)), | ||||
|                 header::USER_AGENT => Some((58, false)), | ||||
|                 header::VARY => Some((59, false)), | ||||
|                 header::VIA => Some((60, false)), | ||||
|                 header::WWW_AUTHENTICATE => Some((61, false)), | ||||
|                 _ => None, | ||||
|             } | ||||
|         } | ||||
|         } => match *name { | ||||
|             header::ACCEPT_CHARSET => Some((15, false)), | ||||
|             header::ACCEPT_ENCODING => if value == "gzip, deflate" { | ||||
|                 Some((16, true)) | ||||
|             } else { | ||||
|                 Some((16, false)) | ||||
|             }, | ||||
|             header::ACCEPT_LANGUAGE => Some((17, false)), | ||||
|             header::ACCEPT_RANGES => Some((18, false)), | ||||
|             header::ACCEPT => Some((19, false)), | ||||
|             header::ACCESS_CONTROL_ALLOW_ORIGIN => Some((20, false)), | ||||
|             header::AGE => Some((21, false)), | ||||
|             header::ALLOW => Some((22, false)), | ||||
|             header::AUTHORIZATION => Some((23, false)), | ||||
|             header::CACHE_CONTROL => Some((24, false)), | ||||
|             header::CONTENT_DISPOSITION => Some((25, false)), | ||||
|             header::CONTENT_ENCODING => Some((26, false)), | ||||
|             header::CONTENT_LANGUAGE => Some((27, false)), | ||||
|             header::CONTENT_LENGTH => Some((28, false)), | ||||
|             header::CONTENT_LOCATION => Some((29, false)), | ||||
|             header::CONTENT_RANGE => Some((30, false)), | ||||
|             header::CONTENT_TYPE => Some((31, false)), | ||||
|             header::COOKIE => Some((32, false)), | ||||
|             header::DATE => Some((33, false)), | ||||
|             header::ETAG => Some((34, false)), | ||||
|             header::EXPECT => Some((35, false)), | ||||
|             header::EXPIRES => Some((36, false)), | ||||
|             header::FROM => Some((37, false)), | ||||
|             header::HOST => Some((38, false)), | ||||
|             header::IF_MATCH => Some((39, false)), | ||||
|             header::IF_MODIFIED_SINCE => Some((40, false)), | ||||
|             header::IF_NONE_MATCH => Some((41, false)), | ||||
|             header::IF_RANGE => Some((42, false)), | ||||
|             header::IF_UNMODIFIED_SINCE => Some((43, false)), | ||||
|             header::LAST_MODIFIED => Some((44, false)), | ||||
|             header::LINK => Some((45, false)), | ||||
|             header::LOCATION => Some((46, false)), | ||||
|             header::MAX_FORWARDS => Some((47, false)), | ||||
|             header::PROXY_AUTHENTICATE => Some((48, false)), | ||||
|             header::PROXY_AUTHORIZATION => Some((49, false)), | ||||
|             header::RANGE => Some((50, false)), | ||||
|             header::REFERER => Some((51, false)), | ||||
|             header::REFRESH => Some((52, false)), | ||||
|             header::RETRY_AFTER => Some((53, false)), | ||||
|             header::SERVER => Some((54, false)), | ||||
|             header::SET_COOKIE => Some((55, false)), | ||||
|             header::STRICT_TRANSPORT_SECURITY => Some((56, false)), | ||||
|             header::TRANSFER_ENCODING => Some((57, false)), | ||||
|             header::USER_AGENT => Some((58, false)), | ||||
|             header::VARY => Some((59, false)), | ||||
|             header::VIA => Some((60, false)), | ||||
|             header::WWW_AUTHENTICATE => Some((61, false)), | ||||
|             _ => None, | ||||
|         }, | ||||
|         Header::Authority(_) => Some((1, false)), | ||||
|         Header::Method(ref v) => { | ||||
|             match *v { | ||||
|                 Method::GET => Some((2, true)), | ||||
|                 Method::POST => Some((3, true)), | ||||
|                 _ => Some((2, false)), | ||||
|             } | ||||
|         } | ||||
|         Header::Scheme(ref v) => { | ||||
|             match &**v { | ||||
|                 "http" => Some((6, true)), | ||||
|                 "https" => Some((7, true)), | ||||
|                 _ => Some((6, false)), | ||||
|             } | ||||
|         } | ||||
|         Header::Path(ref v) => { | ||||
|             match &**v { | ||||
|                 "/" => Some((4, true)), | ||||
|                 "/index.html" => Some((5, true)), | ||||
|                 _ => Some((4, false)), | ||||
|             } | ||||
|         } | ||||
|         Header::Status(ref v) => { | ||||
|             match u16::from(*v) { | ||||
|                 200 => Some((8, true)), | ||||
|                 204 => Some((9, true)), | ||||
|                 206 => Some((10, true)), | ||||
|                 304 => Some((11, true)), | ||||
|                 400 => Some((12, true)), | ||||
|                 404 => Some((13, true)), | ||||
|                 500 => Some((14, true)), | ||||
|                 _ => Some((8, false)), | ||||
|             } | ||||
|         } | ||||
|         Header::Method(ref v) => match *v { | ||||
|             Method::GET => Some((2, true)), | ||||
|             Method::POST => Some((3, true)), | ||||
|             _ => Some((2, false)), | ||||
|         }, | ||||
|         Header::Scheme(ref v) => match &**v { | ||||
|             "http" => Some((6, true)), | ||||
|             "https" => Some((7, true)), | ||||
|             _ => Some((6, false)), | ||||
|         }, | ||||
|         Header::Path(ref v) => match &**v { | ||||
|             "/" => Some((4, true)), | ||||
|             "/index.html" => Some((5, true)), | ||||
|             _ => Some((4, false)), | ||||
|         }, | ||||
|         Header::Status(ref v) => match u16::from(*v) { | ||||
|             200 => Some((8, true)), | ||||
|             204 => Some((9, true)), | ||||
|             206 => Some((10, true)), | ||||
|             304 => Some((11, true)), | ||||
|             400 => Some((12, true)), | ||||
|             404 => Some((13, true)), | ||||
|             500 => Some((14, true)), | ||||
|             _ => Some((8, false)), | ||||
|         }, | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -81,11 +81,11 @@ impl FuzzHpack { | ||||
|                     let low = rng.gen_range(0, high); | ||||
|  | ||||
|                     frame.resizes.extend(&[low, high]); | ||||
|                 } | ||||
|                 }, | ||||
|                 1...3 => { | ||||
|                     frame.resizes.push(rng.gen_range(128, MAX_CHUNK * 2)); | ||||
|                 } | ||||
|                 _ => {} | ||||
|                 }, | ||||
|                 _ => {}, | ||||
|             } | ||||
|  | ||||
|             for _ in 0..rng.gen_range(1, (num - added) + 1) { | ||||
| @@ -155,7 +155,7 @@ impl FuzzHpack { | ||||
|                             .unwrap(); | ||||
|  | ||||
|                         buf = BytesMut::with_capacity(chunks.pop().unwrap_or(MAX_CHUNK)); | ||||
|                     } | ||||
|                     }, | ||||
|                 } | ||||
|             } | ||||
|  | ||||
| @@ -185,7 +185,7 @@ fn gen_header(g: &mut StdRng) -> Header<Option<HeaderName>> { | ||||
|             0 => { | ||||
|                 let value = gen_string(g, 4, 20); | ||||
|                 Header::Authority(to_shared(value)) | ||||
|             } | ||||
|             }, | ||||
|             1 => { | ||||
|                 let method = match g.next_u32() % 6 { | ||||
|                     0 => Method::GET, | ||||
| @@ -200,12 +200,12 @@ fn gen_header(g: &mut StdRng) -> Header<Option<HeaderName>> { | ||||
|                             .collect(); | ||||
|  | ||||
|                         Method::from_bytes(&bytes).unwrap() | ||||
|                     } | ||||
|                     }, | ||||
|                     _ => unreachable!(), | ||||
|                 }; | ||||
|  | ||||
|                 Header::Method(method) | ||||
|             } | ||||
|             }, | ||||
|             2 => { | ||||
|                 let value = match g.next_u32() % 2 { | ||||
|                     0 => "http", | ||||
| @@ -214,7 +214,7 @@ fn gen_header(g: &mut StdRng) -> Header<Option<HeaderName>> { | ||||
|                 }; | ||||
|  | ||||
|                 Header::Scheme(to_shared(value.to_string())) | ||||
|             } | ||||
|             }, | ||||
|             3 => { | ||||
|                 let value = match g.next_u32() % 100 { | ||||
|                     0 => "/".to_string(), | ||||
| @@ -223,12 +223,12 @@ fn gen_header(g: &mut StdRng) -> Header<Option<HeaderName>> { | ||||
|                 }; | ||||
|  | ||||
|                 Header::Path(to_shared(value)) | ||||
|             } | ||||
|             }, | ||||
|             4 => { | ||||
|                 let status = (g.gen::<u16>() % 500) + 100; | ||||
|  | ||||
|                 Header::Status(StatusCode::from_u16(status).unwrap()) | ||||
|             } | ||||
|             }, | ||||
|             _ => unreachable!(), | ||||
|         } | ||||
|     } else { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user