[cifs-protocol] MS-CIFS: Question on NT_TRANSACT_NOTIFY_CHANGE

Torsten Rothschild torsten.rothschild at gmail.com
Sat May 29 10:45:02 MDT 2010


Hello,

I am currently experimenting on NT_TRANSACT_NOTIFY_CHANGE (server-side), and
I ran into some problems with Windows Vista clients.
Windows Vista clients seem to hang (window freeze) upon issuing one
NT_TRANSACT_NOTIFY_CHANGE request. This does not happen on my tests using
other Windows clients (XP, 2003 server). Other clients have not yet been
tested.

Below are some details regarding my test environment setup:
o client: WIndows Vista Ultimate (problem is reproducible with or without
any service packs)
o server: in-house

The following are the steps I did for testing:
1. Windows Vista client logs-on to the in-house server (IPC$)
2. Windows Vista client accesses a specific share
3. Windows Vista client tries to enter a folder directly under the share
    --> at this point, the client window is no longer responsive and the
connection will timeout in a short while

Based on our initial investigation, the following scenario occurred: (other
details no longer included) (FIDs are only examples)
1. Client logged-in and was able to connect to the share successfully.
2. Client sent NT_CREATE_ANDX request to open base path (directly under
share, path = "")
    Server was able to open the folder (fid: 0x0001)
3. Client issued an NT_TRANSACT_NOTIFY_CHANGE request to the opened base
path (fid: 0x0001)
    Server accepted the request. Since no updates have occurred since the
request, server does not yet complete the request
     --> at this point, the client is still OK
4. Client issued a number of Transaction2 requests to get information from
the base path and its contents (TRANS2_QUERY_PATHINFO,
TRANS2_QUERY_FILEINFO, TRANS2_FIND_FIRST2, TRANS2_FIND_NEXT2)
    Server was able to respond successfully to all Transaction2 requests
5. Client sent NT_CREATE_ANDX request to open the folder under the share
    Server was able to open the folder (fid: 0x0002)
6. Client sent another NT_CREATE_ANDX request to open the folder under the
share
    Server was able to open the folder (fix: 0x0003)
7. Client issued an NT_TRANSACT_NOTIFY_CHANGE request to the folder under
the share
    Server accepted the request. Since no updates have occurred since the
request, server does not yet complete the request
    --> at ths point, client seems to be waiting for something from the
server, but there are actually no outstanding requests left to complete
(aside from the Notify Change requests)
8. Client terminates the connection due to timeout

I did some experimenting on the server, and gathered the following
additional information:
o I tried to complete the NT_TRANSACT_NOTIFY_CHANGE request upon receipt
from client, and the issue on Windows Vista client does not seem ot occur
anymore
   * this means that the Windows Vista client was actually waiting for the
NT_TRANSACT_NOTIFY_CHANGE request to complete
   * however, there are no updates yet on the folder, and (specs-wise) I
cannot complete the transaction just yet

The (almost) same scenario can be observed when the server is changed to
Windows XP. However, the issue does not seem to occur.
I'm pretty sure that the problem is in our in-house server, but I could not
seem to find any leads on the issue.
I'm kind of at lost on what the client is really expecting (no additional
information on completion instances can be found on CIFS Technical Reference
and MS-CIFS).
Any (even vague) ideas/possible causes are welcome.

I am very sorry for not being able to give enough information, as we are
only currently relying on some debugging logs (we cannot sniff through our
network, we are still working on this).

Many thanks,
Torsten Rothschild
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.samba.org/pipermail/cifs-protocol/attachments/20100530/1e8dcdc2/attachment.html>


More information about the cifs-protocol mailing list