diff options
author | Alexander Gryanko <xpahos@gmail.com> | 2019-02-27 07:55:52 +0300 |
---|---|---|
committer | Alexis La Goutte <alexis.lagoutte@gmail.com> | 2019-09-22 05:29:30 +0000 |
commit | 9fff62e2a8a19b94f665b2937242b65fe0ef49fc (patch) | |
tree | 0089c0553d2e6686fb9797dc17f928298caf7abc /sharkd_session.c | |
parent | 893a2d9c62e8dcc4fe0f43c47e01743136f55386 (diff) |
Qt, http2: Add Follow HTTP/2 Stream functionality
The HTTP/2 protocol multiplexes a single TCP connection into multiple
independent streams. The Follow TCP output can interleave multiple
HTTP/2 streams, making it harder to analyze a single HTTP/2 stream.
Add the ability to select HTTP/2 Streams within a TCP stream.
Internally, the HTTP/2 dissector now stores the known Stream IDs in a
set for every TCP session which allows an amortized O(n) lookup time for
the previous/next/max Stream ID.
[Peter: make the dissector responsible for clamping the HTTP/2 Stream ID
instead of the Qt code, that should permit future optimizations.]
Change-Id: I5d78f29904ae8f227ae36e1a883155c0ed719200
Reviewed-on: https://code.wireshark.org/review/32221
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Alexander Gryanko <xpahos@gmail.com>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Diffstat (limited to 'sharkd_session.c')
-rw-r--r-- | sharkd_session.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sharkd_session.c b/sharkd_session.c index c2f7b53c90..4ca9d0af1f 100644 --- a/sharkd_session.c +++ b/sharkd_session.c @@ -2740,13 +2740,14 @@ sharkd_follower_visit_layers_cb(const void *key _U_, void *value, void *user_dat const int proto_id = get_follow_proto_id(follower); guint32 ignore_stream; + guint32 ignore_sub_stream; if (proto_is_frame_protocol(pi->layers, proto_get_protocol_filter_name(proto_id))) { const char *layer_proto = proto_get_protocol_short_name(find_protocol_by_id(proto_id)); char *follow_filter; - follow_filter = get_follow_conv_func(follower)(pi, &ignore_stream); + follow_filter = get_follow_conv_func(follower)(pi, &ignore_stream, &ignore_sub_stream); json_dumper_begin_array(&dumper); json_dumper_value_string(&dumper, layer_proto); |