[EMAIL PROTECTED] wrote:

> Fine, but then why should it cope with an offset of 0. You shouldn't be
> trying to add a protocol tree item when the offset is 0, there's
> no data there either.

Eh?  An offset of 0 just means "beginning of the packet".

If you mean "length of 0", then a length of 0 is used in two places:

        1) generated items, where neither the offset nor the length are 
meaningful;

        2) the top-level item for a protocol if the amount of data available 
for the protocol is 0 - that allows the top-level item to be added, with 
the exception thrown when you create the sub-item.

> We could discuss the semantics of this all day, but it's not fixing
> the problem. I have perfectly good CORBA packets that are showing
> up as errors. I have spent a fair bit of time finding out why and
> now I'd like some help to find the best way to fix it.
> 
> I agree with you that proto_tree_add_item should not be called if
> there is nothing to add and I said as much in one of my earlier
> posts, but the current code is based on the principle that this
> can be done.

It's not as if somebody necessarily explicitly said "I'll write this on 
the assumption that there are always parameters to a call" - it might 
have been written without bearing in mind that there aren't (i.e., it's 
not as if it's a Fundamental Design Decision).

I'd suggest moving the start_dissecting() calls into the routines that 
process individual procedure requests and replies, and avoid generating 
those calls if there are no items expected.

See, for example, genOperationRequest() in wireshark_gen.py; it could, 
for example, start out by setting a flag to false and, before the 
self.getCDR3() call, if the flag is false, put out the 
start_dissecting() call and set the flag to true, so that the 
start_dissecting() call is put out before the first parameter.
_______________________________________________
Wireshark-dev mailing list
[email protected]
http://www.wireshark.org/mailman/listinfo/wireshark-dev

Reply via email to