Wireshark-dev: Re: [Wireshark-dev] Source, Destination, Protocol, Info columns values missing.
From: Guy Harris <guy@xxxxxxxxxxxx>
Date: Fri, 9 Jun 2006 16:23:42 -0700

On Jun 9, 2006, at 3:29 PM, Ravi Kondamuru wrote:

I applied the patch of the changes I have been working on ethereal on to wireshark. I am seeing some wierd behavior. On the packet- list pane, I can only see the values of No. and Time. The remainder of the columns are empty. However the remainder of the 2 panes: detailed protocol info and hex dump of packet panes have the correct info.

If I apply a filter and select a subset or all of the packets in the packet-list, it then starts to show all the columns. When I clear the filter, its back to showing only the No and Time columns. What are the functions called for displaying the full packet-list and a filtered packet-list.

Any other ideas why this could be happening?

For a filtered packet list, the dissectors are called with a non-null "tree" argument.

For a full packet list, the dissectors might be called with a null "tree" argument, because it might not be necessary to do a full dissection of the packet.

This means that if a dissector calls a subdissector, it must

			*A*L*W*A*Y*S*

call that subdissector, *regardless* of whether the "tree" argument is null or not. Code that does

	dissect_myprotocol(...)
	{
		set the columns;

			...

		if (!tree)
			return;

			...

		call a subdissector;
	}

or

	dissect_myprotocol(...)
	{
		set the columns;

			...

		if (tree) {

			...

			call a subdissector;
		}
	}

is not valid code.