HTTP: Incorrect request/response matching

This has been corrected using wmem_map() fucnctions.
The full method is in the comments.

HTTP: removed unused function declaration

HTTP: Ranges are used to match reqs/resps

This does NOT fix incorrect URI matching in asynchronously ordered
GETS with a status of 206.

HTTP: Request-response matching corrected

/*
*  Unlike protocols such as NFS and SMB, the HTTP protocol (RFC 9110) does not
*  provide an identifier with which to match requests and responses. Instead,
*  matching is solely based upon the order in which responses are received.
*  HTTP I/O is asynchronously ordered such that, for example, the first of four
*  GET responses is matched with the first outstanding request, the next
*  response with the second oldest outstanding request and so on (FIFO).
*  The previous method instead matched responses with the last of several
*  async requests rather than the first (LIFO), and did not handle requests
*  with no responses such as the case where one or more HTTP packets were
*  not captured. Whenever there were multiple outstanding requests, the SRT
*  (RTT) stats were incorrect, in some cases massively so.
*
*  While RFC 9110 expressly prohibits matching via byte ranges because, among
*  other things, the server may return fewer bytes than requested, the first
*  number of the range does not change. Unlike HTTP implementations, Wireshark
*  has the problem of requests/responses missing from the capture file.
*  In such cases resumption of correct matching was virtually impossible and
*  all matching was incorrect from that point on.
*
*  The method of matching used herein is able to recover from packet loss,
*  any nummber of missing frames, and duplicate range requests. The
*  method used is explaned within the comments.

HTTP: Fixed no resp_in

When a GET request has a range and the response does not,
"Response in" was not being displayed in the request.although
that frame number was available.

HTTP: Fixed error in last commit

HTTP: corrected request/response

Matching was not compliant with RFC9110 when requests were sent
asynchronously ordered fashion. A new matching method has been
added to handle cases where packets are missing from the capture.

HTTP: correct req/resp matching without comments

This is the same code with the commented out code removed.

HTTP: Fix request/reply matching

When asynchrously (yet ordered) requests and replies were matched
according to LIFO rather than FIFO. Next and previous request
and response has been eliminated because there is no use case for
them and they bloat the Packet Detail.

HTTP: Fix request/reply matching

Fixed clang errors
This commit is contained in:
Cal Turney 2024-01-15 17:47:00 -05:00 committed by AndersBroman
parent 84c0e00130
commit 49b3fb60b2
1 changed files with 1 additions and 0 deletions

View File

@ -3747,6 +3747,7 @@ process_header(tvbuff_t *tvb, int offset, int next_offset,
char *str = wmem_strdup(wmem_file_scope(), value);
str += 8;
first_range_num = strtoul(str, NULL ,10);
}
/* req_list is used for req/resp matching and the deletion (and freeing) of matching
* requests and any orphans that preceed them. A GSList is used instead of a wmem map