[ros-diffs] [navaraf] 17156: Correctly set internal state in NpfsDisconnectPipe and fix some return values in NpfsRead.

navaraf at svn.reactos.com navaraf at svn.reactos.com
Sun Aug 7 12:57:03 CEST 2005


Correctly set internal state in NpfsDisconnectPipe and fix some return
values in NpfsRead.
Modified: trunk/reactos/drivers/fs/np/fsctrl.c
Modified: trunk/reactos/drivers/fs/np/rw.c
  _____  

Modified: trunk/reactos/drivers/fs/np/fsctrl.c
--- trunk/reactos/drivers/fs/np/fsctrl.c	2005-08-07 10:13:46 UTC
(rev 17155)
+++ trunk/reactos/drivers/fs/np/fsctrl.c	2005-08-07 10:56:57 UTC
(rev 17156)
@@ -187,6 +187,7 @@

       Server = (Fcb->PipeEnd == FILE_PIPE_SERVER_END);
       OtherSide = Fcb->OtherSide;
       Fcb->OtherSide = NULL;
+      Fcb->PipeState = FILE_PIPE_DISCONNECTED_STATE;
       /* Lock the server first */
       if (Server)
       {
  _____  

Modified: trunk/reactos/drivers/fs/np/rw.c
--- trunk/reactos/drivers/fs/np/rw.c	2005-08-07 10:13:46 UTC (rev
17155)
+++ trunk/reactos/drivers/fs/np/rw.c	2005-08-07 10:56:57 UTC (rev
17156)
@@ -27,7 +27,7 @@

 
   DbgPrint("---------------\n");
 
-  for (i = 0; i < ROUND_UP(Length, 16); i+= 16)
+  for (i = 0; i < Length; i+= 16)
     {
       memset(Line, ' ', 64);
       Line[64] = 0;
@@ -398,23 +398,19 @@
      {
         if (Fcb->ReadDataAvailable == 0)
         {
-	   if (Fcb->PipeState == FILE_PIPE_CONNECTED_STATE)
-	   {
-	      ASSERT(Fcb->OtherSide != NULL);
-	      KeSetEvent(&Fcb->OtherSide->WriteEvent, IO_NO_INCREMENT,
FALSE);
-	   }
-	   if (Information > 0 &&
-	       (Fcb->Pipe->ReadMode != FILE_PIPE_BYTE_STREAM_MODE ||
-	        Fcb->PipeState != FILE_PIPE_CONNECTED_STATE))
-	   {
-	      break;
-	   }
       	   if (Fcb->PipeState != FILE_PIPE_CONNECTED_STATE)
 	   {
 	      DPRINT("PipeState: %x\n", Fcb->PipeState);
-	      Status = STATUS_PIPE_BROKEN;
+	      if (Fcb->PipeState == FILE_PIPE_LISTENING_STATE)
+	         Status = STATUS_PIPE_LISTENING;
+	      else
+	         Status = STATUS_PIPE_DISCONNECTED;
 	      break;
            }
+
+	   ASSERT(Fcb->OtherSide != NULL);
+	   KeSetEvent(&Fcb->OtherSide->WriteEvent, IO_NO_INCREMENT,
FALSE);
+
 	   ExReleaseFastMutex(&Fcb->DataListLock);
 	   if (IoIsOperationSynchronous(Irp))
 	   {
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.reactos.org/pipermail/ros-diffs/attachments/20050807/35349976/attachment.html


More information about the Ros-diffs mailing list