Wireshark-dev: [Wireshark-dev] Packet visited more than once?

From: Yaniv Kaul <yaniv.kaul@xxxxxxxxxxxx>
Date: Thu, 22 May 2025 18:22:03 +0300
I have some issue with the dissector going over my packets more than once.
There's a legitimate reason to go over *some* packets more than once - if I have more than a single PDU in a packet (or a reassembled one), that's fine. But it just seems that it goes over all packets. I'm trying to fight it off with !pinfo->fd->visited, but I'm quite sure I'm doing something wrong. My code is quite standard:
static int
dissect_scylla(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
{
    tcp_dissect_pdus(tvb, pinfo, tree, scylla_desegment, SCYLLA_NEGOTIATION_SIZE,
        get_scylla_pdu_len, dissect_scylla_pdu, data);
    return tvb_reported_length(tvb);
}

The get_scylla_pdu_len isn't, regretfully - it does find_conversation() and if it exists uses it (to get the state of protocol features, such as streaming, compression, etc.)

TIA,
Y.