wireshark/epan
Cal Turney 49b3fb60b2 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
2024-04-05 21:37:05 +00:00
..
crypt Fix lots of spellings 2024-02-25 22:46:47 +00:00
dfilter dfilter: Don't crash on arithmetic between string literals 2024-03-12 21:14:04 -04:00
dissectors HTTP: Incorrect request/response matching 2024-04-05 21:37:05 +00:00
ftypes Fix lots of spellings 2024-02-25 22:46:47 +00:00
wslua wslua: Add missing @since tag 2024-04-05 21:29:41 +00:00
.clang-tidy Clang-tidy: Enable recursion errors for dissectors and wiretap 2024-03-24 16:37:45 +00:00
.editorconfig stats_tree API updates 2024-02-12 12:53:48 +00:00
CMakeLists.txt HTTP3: Huffman decoding 2024-01-18 09:46:24 +00:00
addr_resolv.c Switch our boolean preferences to bool 2024-03-31 16:09:23 +00:00
addr_resolv.h Switch our boolean preferences to bool 2024-03-31 16:09:23 +00:00
address.h Qt: Fix address editor leak 2023-10-31 13:54:14 +00:00
address_types.c Fix some more spelling errors 2024-02-06 10:46:08 +00:00
address_types.h
afn.c
afn.h
aftypes.c
aftypes.h
app_mem_usage.c
app_mem_usage.h
arcnet_pids.h
arptypes.h
asn1.c
asn1.h
ax25_pids.h
bridged_pids.h
capture_dissectors.c
capture_dissectors.h
charsets.c
charsets.h
chdlctypes.h
cisco_pid.h
color_filters.c epan: Convert the color filters code to C99 types 2024-04-01 08:18:01 +00:00
color_filters.h Qt: Convert our models to C99 types 2024-04-01 08:18:57 +00:00
column-info.h columns: Allow any field expression syntax to be used in columns 2024-02-14 08:11:01 +00:00
column-utils.c columns: Allow any field expression syntax to be used in columns 2024-02-14 08:11:01 +00:00
column-utils.h column: Update custom column regex 2024-02-12 14:48:31 +00:00
column.c columns: Allow any field expression syntax to be used in columns 2024-02-14 08:11:01 +00:00
column.h
conv_id.h Qt: Convert our widgets to C99 types 2024-04-01 08:19:51 +00:00
conversation.c conversation: Add support for a "blob" conversation-element type. 2024-04-05 11:07:05 +00:00
conversation.h Telnet: vSPC: Track the "vMotion conversation". 2024-04-05 11:07:05 +00:00
conversation_debug.h
conversation_filter.c
conversation_filter.h ui: Convert our remaining UI code to C99 types 2024-04-03 05:01:03 +00:00
conversation_table.c
conversation_table.h
crc6-tvb.c
crc6-tvb.h
crc8-tvb.c
crc8-tvb.h
crc10-tvb.c
crc10-tvb.h
crc16-tvb.c
crc16-tvb.h
crc32-tvb.c
crc32-tvb.h
dccpservicecodes.h
decode_as.c epan: Use bools in our pref_set_pair_cb callbacks 2024-03-31 11:38:35 -07:00
decode_as.h Fix lots of spellings 2024-02-25 22:46:47 +00:00
diam_dict.h
diam_dict.l
disabled_protos.c ui: Convert dissect_opts to C99 types 2024-03-29 17:43:55 -07:00
disabled_protos.h ui: Convert dissect_opts to C99 types 2024-03-29 17:43:55 -07:00
dtd.h
dtd_grammar.lemon
dtd_parse.h
dtd_parse.l
dtd_preparse.l
dvb_chartbl.c
dvb_chartbl.h
eap.h
eapol_keydes_types.h
enterprises.c [Automatic update for 2024-03-31] 2024-03-31 12:17:08 +00:00
enterprises.h
epan.c Epan: Cleanup plugins only after all possible calls are made 2024-01-10 01:04:30 +00:00
epan.h epan: Add plugin get_descriptions callback 2023-12-12 14:43:37 +00:00
epan_dissect.h
etypes.h fgcp: Add Session Protocol (0x8893) 2024-03-04 18:19:49 +00:00
ex-opt.c
ex-opt.h
except.c
except.h
exceptions.h Fix lots of spellings 2024-02-25 22:46:47 +00:00
exntest.c
expert.c epan: Add some Clang-tidy suppressions 2024-03-28 13:40:07 -07:00
expert.h
export_object.c
export_object.h
exported_pdu.c
exported_pdu.h
fifo_string_cache.c
fifo_string_cache.h
fifo_string_cache_test.c
filter_expressions.c
filter_expressions.h
follow.c Qt: Fix resetting follow tap when the filter changes 2023-10-25 09:32:40 -04:00
follow.h follow: Get rid of frs_return_t 2024-03-25 09:13:49 +00:00
frame_data.c epan: Remove subnum from frame_data 2024-03-16 10:12:34 +00:00
frame_data.h epan: Remove subnum from frame_data 2024-03-16 10:12:34 +00:00
frame_data_sequence.c epan: Add some Clang-tidy suppressions 2024-03-28 13:40:07 -07:00
frame_data_sequence.h
funnel.c Lua+ui: Convert the funnel code to C99 types 2024-03-30 12:35:25 -07:00
funnel.h Lua+ui: Convert the funnel code to C99 types 2024-03-30 12:35:25 -07:00
golay.c
golay.h
guid-utils.c WSLua DissectorTable GUID Support 2023-11-01 22:01:15 +00:00
guid-utils.h WSLua DissectorTable GUID Support 2023-11-01 22:01:15 +00:00
iana-ip-data.c IANA IP Registry: More API refactoring 2023-10-31 08:49:55 +00:00
iana-ip.c IANA IP Registry: More API refactoring 2023-10-31 08:49:55 +00:00
iana-ip.h wsutil: Rename inet_netw.[ch] 2023-10-31 13:41:31 +00:00
iana_charsets.c
iana_charsets.h
iax2_codec_type.h
in_cksum.c TCP, UDP: Calculate partial (pseudo header) checksums for offload 2023-11-11 10:12:49 -05:00
in_cksum.h TCP, UDP: Calculate partial (pseudo header) checksums for offload 2023-11-11 10:12:49 -05:00
introspection-enums.c expert: add a new expert group for dissector bugs. 2024-03-22 13:23:40 -07:00
introspection.c
introspection.h
ip_opts.h
ipproto.c
ipproto.h
lapd_sapi.h
llcsaps.h
manuf-data.c [Automatic update for 2024-03-31] 2024-03-31 12:17:08 +00:00
manuf.c manuf: Resolving of MA-M, MA-S, 28 and 36 bit OUIs 2023-12-01 00:37:27 +00:00
manuf.h manuf: Resolving of MA-M, MA-S, 28 and 36 bit OUIs 2023-12-01 00:37:27 +00:00
maxmind_db.c maxmind_db: Set CLOEXEC on the pipe file descriptors 2024-01-02 13:37:56 +00:00
maxmind_db.h wsutil: Consolidate IP address code 2023-10-31 10:14:09 +00:00
media_params.c
media_params.h
next_tvb.c
next_tvb.h
nghttp2_hd_huffman.h HTTP3: Huffman decoding 2024-01-18 09:46:24 +00:00
nghttp2_hd_huffman_data.c HTTP3: Huffman decoding 2024-01-18 09:46:24 +00:00
nlpid.h
oids.c Switch our boolean preferences to bool 2024-03-31 16:09:23 +00:00
oids.h
oids_test.c
osi-utils.c
osi-utils.h
oui.h Thread: Update for Thread version 1.2 and 1.3 along with TREL 2024-01-03 15:41:47 +00:00
packet.c Assert on heur dissector list not found 2024-03-27 08:20:19 +00:00
packet.h packet: Add missing param documentation 2024-03-16 21:42:40 +00:00
packet_info.h epan: Add simple recursion checks 2024-03-01 17:10:32 +00:00
params.h ui: Convert our remaining UI code to C99 types 2024-04-03 05:01:03 +00:00
pci-ids.c [Automatic update for 2024-03-31] 2024-03-31 12:17:08 +00:00
pci-ids.h
plugin_if.c
plugin_if.h
ppptypes.h
prefs-int.h epan: Use bools in our pref_set_pair_cb callbacks 2024-03-31 11:38:35 -07:00
prefs.c prefs: Don't cast a bool pointer to a gboolean pointer 2024-04-01 12:29:53 -04:00
prefs.h Switch our boolean preferences to bool 2024-03-31 16:09:23 +00:00
print.c epan: Add some Clang-tidy suppressions 2024-03-28 13:40:07 -07:00
print.h tshark: Fake unused proto items when -e is given 2024-01-11 09:34:11 +00:00
print.ps
print_stream.c epan: Convert our stream printing code to C99 types 2024-03-30 14:27:39 -07:00
print_stream.h epan: Convert our stream printing code to C99 types 2024-03-30 14:27:39 -07:00
proto.c epan: Switch proto_get_frame_protocols to bools 2024-04-01 17:57:54 -07:00
proto.h epan: Switch proto_get_frame_protocols to bools 2024-04-01 17:57:54 -07:00
proto_data.c
proto_data.h
protobuf-helper.c Protobuf: don't warn about re-including base types 2024-03-30 22:59:44 +00:00
protobuf-helper.h Fix lots of spellings 2024-02-25 22:46:47 +00:00
protobuf_lang_parser.lemon Fix lots of spellings 2024-02-25 22:46:47 +00:00
protobuf_lang_scanner.l
protobuf_lang_tree.c Protobuf: don't warn about re-including base types 2024-03-30 22:59:44 +00:00
protobuf_lang_tree.h
ps.h
ptvcursor.h
radius_dict.l Fix AVP decryption in Radius dissector 2023-11-09 09:13:23 +00:00
range.c Remove parentheses from return bool 2024-04-01 15:18:09 +00:00
range.h
reassemble.c Fix lots of spellings 2024-02-25 22:46:47 +00:00
reassemble.h Fix lots of spellings 2024-02-25 22:46:47 +00:00
reassemble_test.c reassemble: Set overlap flags instead of throwing exception 2023-09-17 12:56:05 +00:00
reedsolomon.c Fix lots of spellings 2024-02-25 22:46:47 +00:00
reedsolomon.h
register-int.h
register.c
register.h
req_resp_hdrs.c HTTP: Fix chunking detection for certain request methods 2023-11-02 23:35:50 -04:00
req_resp_hdrs.h HTTP: Fix chunking detection for certain request methods 2023-11-02 23:35:50 -04:00
rtd_table.c
rtd_table.h
rtp_pt.h
sctpppids.c
sctpppids.h
secrets.c epan: Convert the secrets code to C99 types 2024-03-30 16:59:28 -07:00
secrets.h epan: Convert the secrets code to C99 types 2024-03-30 16:59:28 -07:00
sequence_analysis.c
sequence_analysis.h
services-data.c [Automatic update for 2024-03-24] 2024-03-24 09:24:58 +00:00
services.c Services: const-ify the data structures. 2024-01-27 11:27:22 +00:00
services.h Services: const-ify the data structures. 2024-01-27 11:27:22 +00:00
show_exception.c expert: add a new expert group for dissector bugs. 2024-03-22 13:23:40 -07:00
show_exception.h
slow_protocol_subtypes.h
sminmpec.h
srt_table.c
srt_table.h
stat_groups.h Draft: Make LTE Uu stats and graph work for NR too 2023-12-06 12:50:28 +00:00
stat_tap_ui.c
stat_tap_ui.h
stats_tree.c epan: Add some Clang-tidy suppressions 2024-03-28 13:40:07 -07:00
stats_tree.h Stats tree: Change our path separator 2024-02-14 08:05:24 +00:00
stats_tree_priv.h Stats tree: Change our path separator 2024-02-14 08:05:24 +00:00
stream.c
stream.h
strutil.c epan: Make hex_str_to_bytes reject an odd # of hex characters >= 3 2024-01-24 09:07:38 +00:00
strutil.h
t35.c
t35.h
tap-voip.h
tap.c Fix lots of spellings 2024-02-25 22:46:47 +00:00
tap.h Fix lots of spellings 2024-02-25 22:46:47 +00:00
test_epan.c
tfs.c Add & use tfs_should_be_traced_should_not_be_traced 2024-02-10 13:34:14 +00:00
tfs.h Add & use tfs_should_be_traced_should_not_be_traced 2024-02-10 13:34:14 +00:00
timestamp.c
timestamp.h Handle all time stamp precisions in the View menu and recent file. 2023-09-13 13:38:01 -07:00
timestats.c
timestats.h
to_str.c Have diaplay_epoch_time() take an nstime_t as an argument. 2023-09-10 19:48:36 -07:00
to_str.h wsutil: Rename inet_netw.[ch] 2023-10-31 13:41:31 +00:00
tvbparse.c
tvbparse.h
tvbtest.c
tvbuff-int.h
tvbuff.c epan: BCD strings with multiple filler nibbles at the end 2024-03-20 20:45:23 +00:00
tvbuff.h HTTP3: Huffman decoding 2024-01-18 09:46:24 +00:00
tvbuff_base64.c
tvbuff_brotli.c
tvbuff_composite.c
tvbuff_hpackhuff.c HTTP3: Huffman decoding 2024-01-18 09:46:24 +00:00
tvbuff_lz77.c
tvbuff_lz77huff.c
tvbuff_lznt1.c
tvbuff_rdp.c Fix some more spelling errors 2024-02-06 10:46:08 +00:00
tvbuff_rdp.h
tvbuff_real.c
tvbuff_subset.c epan: Don't create tvbuff subsets that contain more than reported 2023-08-30 13:58:18 +00:00
tvbuff_zlib.c
tvbuff_zstd.c
uat-int.h Qt: Convert our models to C99 types 2024-04-01 08:18:57 +00:00
uat.c UAT: Fix a Coverity warning 2023-11-09 23:21:57 +00:00
uat.h UAT: Handle TRUE and FALSE regardless of case 2024-04-01 13:38:17 -04:00
uat_load.l UAT: fix wrong cbdata being passed to cb.set() 2024-01-04 09:50:59 +00:00
unit_strings.c Move unit string for cycles to unit_strings.h 2024-02-07 08:15:26 +00:00
unit_strings.h Move unit string for cycles to unit_strings.h 2024-02-07 08:15:26 +00:00
value_string.c Use bsearch for lookups in sorted extended value strings. 2024-04-04 06:37:46 +00:00
value_string.h
wmem_scopes.c
wmem_scopes.h
ws_printf.h
wscbor.c cose: Peek ahead for map principal value before dissecting map items 2024-02-23 00:12:00 +00:00
wscbor.h
wscbor_test.c
x264_prt_id.h
xdlc.c
xdlc.h