This is all well and good.  Here is the problem:  Samba-TNG is the
client, and the server is a Win2k Professional system.  I can't blame
Samba-TNG if it's the Win2k system that is sending back a Process ID in
the response that doesn't match the request.

-Devin

On Wed, 2003-02-19 at 17:22, Guy Harris wrote:
> On Wed, Feb 19, 2003 at 03:34:32PM -0500, Devin Heitmueller wrote:
> > That's pretty weird.  The UserID field starts as 0 for the first few
> > frames, and when the SMBSessionSetupAndX request is sent (contain zero
> > as the UserID), the Win2k server replies with 2048.  All subsequent
> > requests have 2048 for both the request and reply.
> 
> As per my other mail, I think he meeant process ID, not user ID.
> 
> The CIFS Technical Reference 1.00 on the SNIA Web site:
> 
>       http://www.snia.org/tech_activities/CIFS/CIFS-TR-1p00_FINAL.pdf
> 
> says:
> 
>       3.2.5. Pid Field
>         Pid is the caller's process id, and is generated by the client
>         to uniquely identify a process within the client computer. 
>         Concurrency control is associated with Pid (and PidHigh)--
>         sharing modes, and locks are arbitrated using the Pid.  For
>         example, if a file is successfully opened for exclusive access,
>         subsequent opens from other clients or from the same client with
>         a different Pid will be refused.  Clients inform servers of the
>         creation of a new process by simply introducing a new Pid value
>         into the dialogue for new processes.  The client operating
>         system must ensure that the appropriate close and cleanup SMBs
>         will be sent when the last process referencing a file closes it. 
>         From the server's point of view, there is no concept of Fids
>         "belonging to" processes.  A Fid returned by the server to one
>         process may be used by any other process using the same
>         transport connection and Tid.  It is up to the client operating
>         system to ensure that only authorized client processes gain
>         access to Fids (and Tids).  On SMB_COM_TREE_DISCONNECT (or when
>         the client and server session is terminated) with a given Tid,
>         the server will invalidate any files opened by any process on
>         that client.tid Field
> 
>               ...
> 
>       3.2.7.  Mid Field
>         The multiplex ID (Mid) is used along with the Pid to allow
>         multiplexing the single client and server connection among the
>         client's multiple processes, threads, and requests per thread. 
>         Clients may have many outstanding requests (up to the negotiated
>         number, MaxMpxCount) at one time.  Servers MAY respond to
>         requests in any order, but a response message MUST always
>         contain the same Mid and Pid values as the corresponding request
>         message.  The client MUST NOT have multiple outstanding requests
>         to a server with the same Mid and Pid.
> 
> which suggests that it is, at least, unwise to reply with a PID other
> than the one in the request.  The CIFS Technical Reference isn't a
> Microsoft publication saying "THIS IS THE OFFICIAL WAY CIFS WORKS, AND
> IF YOU DON'T WORK THAT WAY YOU'RE NOT CIFS" (I would not be surprised,
> in fact, to find that Microsoft have a few places where they don't work
> the same way - and perhaps some places where different releases of
> Windows behave differently, or where Windows OT and Windows NT behave
> differently, with one or the other or both not matching the spec, and
> that at least some of those places cause customer problems.)
> 
> If, for example, packet 17 is a request and packet 18 is a reply to that
> request, I'd suggest to the Samba-TNG folks, if the reply is coming from
> Samba-TNG, that it would have been a Really Good Idea if the process ID
> in packet 18 had been 18014 rather than 124, unless that's something
> that they *have* to do in order not to have problems with clients. 
> Perhaps, with the client in question, they can *get away with* that, but
> it does appear to disagree with the SNIA spec, *and* Ethereal does, as I
> remember, have to match both MID *and* PID in order to avoid matching
> replies with the wrong request, in at least some captures.
-- 
Devin Heitmueller
Senior Software Engineer
Netilla Networks Inc


Reply via email to