{\r
                Pipe_SelectPipe(PNum);\r
                \r
-               if (Pipe_IsConfigured() && (Pipe_BoundEndpointNumber() == (EndpointAddress & PIPE_EPNUM_MASK)))\r
-                 return true;\r
+               uint8_t PipeToken = Pipe_GetPipeToken();\r
+\r
+               if (PipeToken != PIPE_TOKEN_SETUP)\r
+                 PipeToken = (PipeToken == ((EndpointAddress & PIPE_EPDIR_MASK) ? PIPE_TOKEN_IN : PIPE_TOKEN_OUT));\r
+               \r
+               if (Pipe_IsConfigured() && (Pipe_BoundEndpointNumber() == (EndpointAddress & PIPE_EPNUM_MASK)) && PipeToken)\r
+               {               \r
+                       return true;\r
+               }\r
        }\r
        \r
        Pipe_SelectPipe(PrevPipeNumber);\r