Copyright 1998-2009 Gerald Combs <gerald@wireshark.org> and contributors.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Compiled with GTK+ 2.16.1, with GLib 2.20.1, with libpcap 1.0.0, with libz
1.2.3.3, without POSIX capabilities, without libpcre, without SMI, without
c-ares, without ADNS, without Lua, without Python, without GnuTLS, without
Gcrypt, without Kerberos, without GeoIP, without PortAudio, without AirPcap.
NOTE: this build doesn't support the "matches" operator for Wireshark filter
syntax.
Running on Linux 2.6.28-13-generic, with libpcap version 1.0.0.
Built using gcc 4.3.3.
updated and improved firebird wire protocol dissector
1. I'd appreciate a summary of the changes and improvements. (I haven't yet looked at the patch).2. Can you provide a capture file containing GDS-DB traffic ?Thanks !
Improvements:1. GDSDB packets contain one or more, full or partial messages. The olddissector only attempted to decode the first message in a packet. The newdissector attempts to decode all the messages in a packet.2. There are about 80 message types defined in the protocol. The old dissectordidn't attempt to decode all of them. The new dissector does.3. Each message contains several fields. The old dissector didn't attempt toshow many of these fields. The new dissector does.Known Problems:1. GDSDB messages are not self describing and the length of the data is verydifficult to determine just by looking at an individual packet. Unfortunately,the "fetch response" message (which contains the actual data returned by ansql query) is one of these. In order to decode it, information from a previousmessage (the "prepare response") needs to be remembered and matched against athe multiple following "fetch response" messages. The format of the data forboth the description in the "prepare response" and "fetch response" is notdescribed anywhere except deep in the firebird source code.As a result of this, the dissector cannot currently decode "fetch response"messages and gets confused about messages that follow it. Both the old and newdissectors suffer from this but it is more of a problem in the new dissectorbecause it tries harder to actually decode following messages.This confusion can result in garbled messages, dissector exceptions andhangups.2. Follow on messages (ie. the ones that you use DESEGMENT_ONE_MORE_SEGMENT tohandle) are not processed correctly. Theoretically, this can be fixed, but itdoesn't work the way I expected it to and due to the problems outlined in (1),there doesn't seem to be much point.SummaryOn reflection, I am not happy at all with the state of this dissector. You geta better (although still incomplete) picture of what is going on with the newdissector than the old one but at the expense of dissector exceptions andhangups. Should it be included? I don't know.
(In reply to comment #3) > Summary > > On reflection, I am not happy at all with the state of this dissector. You get > a better (although still incomplete) picture of what is going on with the new > dissector than the old one but at the expense of dissector exceptions and > hangups. Should it be included? I don't know. Hmmm, exceptions and hangups disqualifies it for inclusion right now.On the request response tracking, there's a README on that. Have you checked it for inspiration?
(In reply to comment #4) > (In reply to comment #3) > > Summary > > > > On reflection, I am not happy at all with the state of this dissector. You get > > a better (although still incomplete) picture of what is going on with the new > > dissector than the old one but at the expense of dissector exceptions and > > hangups. Should it be included? I don't know. > > Hmmm, exceptions and hangups disqualifies it for inclusion right now. Understood. I'll just have to keep working on it.> > On the request response tracking, there's a README on that. Have you checked it > for inspiration? > Thanks. I hadn't seen it and it looks very useful.