(reader: &mut R)
| 995 | } |
| 996 | |
| 997 | async fn read_packet<R: AsyncRead + Unpin>(reader: &mut R) -> Result<Vec<u8>, AppError> { |
| 998 | let mut header = [0u8; 4]; |
| 999 | reader.read_exact(&mut header).await.map_err(|error| { |
| 1000 | AppError::native(format!("Unable to read WebKit packet header: {error}")) |
| 1001 | })?; |
| 1002 | let length = u32::from_be_bytes(header) as usize; |
| 1003 | if length > WEBKIT_PACKET_MAX_LEN { |
| 1004 | return Err(AppError::bad_request(format!( |
| 1005 | "WebKit packet length {length} exceeds maximum {WEBKIT_PACKET_MAX_LEN}." |
| 1006 | ))); |
| 1007 | } |
| 1008 | let mut payload = vec![0u8; length]; |
| 1009 | reader |
| 1010 | .read_exact(&mut payload) |
| 1011 | .await |
| 1012 | .map_err(|error| AppError::native(format!("Unable to read WebKit packet body: {error}")))?; |
| 1013 | Ok(payload) |
| 1014 | } |
| 1015 | |
| 1016 | struct RpcMessage { |
| 1017 | selector: String, |
no outgoing calls
no test coverage detected