Ethereal-dev: Re: [Ethereal-dev] SMB patch, new version

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Guy Harris <gharris@xxxxxxxxx>
Date: Fri, 16 Nov 2001 01:35:36 -0800
On Fri, Nov 16, 2001 at 07:20:14PM +1100, Ronnie Sahlberg wrote:
> I think I can fix NT Cancel cleanly.

I think I just *did* fix it cleanly with my most recent checkin.

I checked in a change that adds an "smb_saved_info_t" structure,
containing less stuff than a full "smb_info_t" structure (saving some
more memory), and that puts *those* structures into the hash table and
uses information from it, if found, to fill in the automatic
"smb_info_t" variable.

It also doesn't remove the existing "smb_saved_info_t" structure from
the hash table, or allocate a new structure and put it into the hash
table, for NT Cancel requests, so

	when dissecting the NT Cancel, the frame-number information for
	the original request is in the "smb_info_t" structure;

	when dissecting the reply to the cancelled request, the
	information for the original request is in the "smb_info_t"
	structure.

Still more stuff could be removed from the "smb_saved_info_t" structure;
it only needs to contain "frame_req", "frame_res", and a "void *",
which:

	for most requests, would be null;

	for NT Transaction requests, would point to a structure that
	need contain only the transaction subcommand;

	for Transaction2 requests, would point to a structure that
	contains the subcommand and the info level (I don't think it
	need contain the info count, as that's part of the response
	parameters);

	for Transaction requests, would point to a structure containing
	the subcommand, the transaction subcommand, and the stuff that's
	currently in the "smb_request_val" structure;

and the code that handles those types of transaction requests would
allocate those structures and set the pointer to point to them.