Wireshark-dev: [Wireshark-dev] [Lua workaround] gRPC dissector does not start Protobuf sub-diss

From: Alexander Petrossian <paf@xxxxxxxxx>
Date: Thu, 23 Dec 2021 20:40:01 +0300
Friends, currently when gRPC plugin fails to get content-type header value it stops and does not invoke Protobuf dissector, which makes me sad:

   http2_content_type = http2_get_header_value(pinfo, HTTP2_HEADER_CONTENT_TYPE, FALSE);
   if (http2_content_type == NULL || http2_path == NULL) {
       return; /* not continue if there is not enough grpc information */
   }

Thing is, traces are more often recorded without start of communication.
And even when gRPC body is there, content-type field was compressed and can not be decompressed = http2_get_header_value returns NULL.

Could one do some workaround in Lua right now?
Somehow force gRPC hand to invoke Protobuf dissector even without content-type: application/grpc.

I’m thinking of wedging between dissectors and provide some default value of content-type or some such. But that approach seems vague. Any ideas on it or other?

Thanks in advance!
PAF

P.S. I’ve suggested a seemingly trivial untested workaround in C here
https://gitlab.com/wireshark/wireshark/-/issues/17793

Right now I’m interested in some Lua approach that we could employ without recompilings...