Fix error returned when exceeding allowed instances.

diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c
index d995cf7..2c651bb 100644
--- a/dlls/ntdll/tests/om.c
+++ b/dlls/ntdll/tests/om.c
@@ -109,7 +109,7 @@
 
     status = pNtCreateNamedPipeFile(&pipe, GENERIC_READ|GENERIC_WRITE, &attr, &iosb, FILE_SHARE_READ|FILE_SHARE_WRITE,
                                     FILE_CREATE, FILE_PIPE_FULL_DUPLEX, FALSE, FALSE, FALSE, 1, 256, 256, &timeout);
-    todo_wine ok(status == STATUS_INSTANCE_NOT_AVAILABLE,
+    ok(status == STATUS_INSTANCE_NOT_AVAILABLE,
         "NtCreateNamedPipeFile should have failed with STATUS_INSTANCE_NOT_AVAILABLE got(%08lx)\n", status);
 
     pRtlInitUnicodeString(&str, buffer2);
diff --git a/server/named_pipe.c b/server/named_pipe.c
index d461052..0d475e5 100644
--- a/server/named_pipe.c
+++ b/server/named_pipe.c
@@ -562,10 +562,9 @@
     }
     else
     {
-        set_error( 0 );  /* clear the name collision */
         if (pipe->maxinstances <= pipe->instances)
         {
-            set_error( STATUS_PIPE_BUSY );
+            set_error( STATUS_INSTANCE_NOT_AVAILABLE );
             release_object( pipe );
             return;
         }
@@ -577,6 +576,7 @@
             release_object( pipe );
             return;
         }
+        set_error( 0 );  /* clear the name collision */
     }
 
     server = create_pipe_server( pipe, req->options );