Rob Shearman : rpcrt4: RpcServerUseProtseqEp(..., NULL, ...) should return RPC_S_OK.

Alexandre Julliard julliard at winehq.org
Mon Mar 30 12:08:41 CDT 2009


Module: wine
Branch: master
Commit: 4d8057ffef2349fd1dc79a3105b9a0165527736e
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4d8057ffef2349fd1dc79a3105b9a0165527736e

Author: Rob Shearman <robertshearman at gmail.com>
Date:   Sun Mar 29 18:42:20 2009 +0100

rpcrt4: RpcServerUseProtseqEp(..., NULL, ...) should return RPC_S_OK.

However, on some buggy platforms it returns
RPC_S_INVALID_ENDPOINT_FORMAT. Don't follow this behaviour our
implementation of the API.

---

 dlls/rpcrt4/rpc_server.c        |    6 ------
 dlls/rpcrt4/tests/rpc_protseq.c |   14 +++++++-------
 2 files changed, 7 insertions(+), 13 deletions(-)

diff --git a/dlls/rpcrt4/rpc_server.c b/dlls/rpcrt4/rpc_server.c
index 4a87bd0..6e9dbe9 100644
--- a/dlls/rpcrt4/rpc_server.c
+++ b/dlls/rpcrt4/rpc_server.c
@@ -772,9 +772,6 @@ RPC_STATUS WINAPI RpcServerUseProtseqEpExA( RPC_CSTR Protseq, UINT MaxCalls, RPC
        debugstr_a(szep), SecurityDescriptor,
        lpPolicy->Length, lpPolicy->EndpointFlags, lpPolicy->NICFlags );
 
-  if (!Endpoint)
-    return RPC_S_INVALID_ENDPOINT_FORMAT;
-
   status = RPCRT4_get_or_create_serverprotseq(MaxCalls, RPCRT4_strdupA(szps), &ps);
   if (status != RPC_S_OK)
     return status;
@@ -796,9 +793,6 @@ RPC_STATUS WINAPI RpcServerUseProtseqEpExW( RPC_WSTR Protseq, UINT MaxCalls, RPC
        debugstr_w( Endpoint ), SecurityDescriptor,
        lpPolicy->Length, lpPolicy->EndpointFlags, lpPolicy->NICFlags );
 
-  if (!Endpoint)
-    return RPC_S_INVALID_ENDPOINT_FORMAT;
-
   status = RPCRT4_get_or_create_serverprotseq(MaxCalls, RPCRT4_strdupWtoA(Protseq), &ps);
   if (status != RPC_S_OK)
     return status;
diff --git a/dlls/rpcrt4/tests/rpc_protseq.c b/dlls/rpcrt4/tests/rpc_protseq.c
index 06a82ec..4837f6a 100644
--- a/dlls/rpcrt4/tests/rpc_protseq.c
+++ b/dlls/rpcrt4/tests/rpc_protseq.c
@@ -43,13 +43,6 @@ static void test_RpcServerUseProtseq(void)
     static unsigned char np[] = "ncacn_np";
     static unsigned char ncalrpc[] = "ncalrpc";
 
-    /* show that RpcServerUseProtseqEp(..., NULL, ...) isn't the same as
-     * RpcServerUseProtseq(...) */
-    status = RpcServerUseProtseqEp(ncalrpc, 0, NULL, NULL);
-    ok(status == RPC_S_INVALID_ENDPOINT_FORMAT,
-       "RpcServerUseProtseqEp with NULL endpoint should have failed with "
-       "RPC_S_INVALID_ENDPOINT_FORMAT instead of %d\n", status);
-
     status = RpcServerInqBindings(&bindings);
     if (status == RPC_S_NO_BINDINGS)
         binding_count_before = 0;
@@ -60,6 +53,13 @@ static void test_RpcServerUseProtseq(void)
         RpcBindingVectorFree(&bindings);
     }
 
+    /* show that RpcServerUseProtseqEp(..., NULL, ...) is the same as
+     * RpcServerUseProtseq(...) */
+    status = RpcServerUseProtseqEp(ncalrpc, 0, NULL, NULL);
+    ok(status == RPC_S_OK || broken(status == RPC_S_INVALID_ENDPOINT_FORMAT),
+       "RpcServerUseProtseqEp with NULL endpoint failed with status %d\n",
+       status);
+
     /* register protocol sequences without explicit endpoints */
     status = RpcServerUseProtseq(np, 0, NULL);
     if (status == RPC_S_PROTSEQ_NOT_SUPPORTED)




More information about the wine-cvs mailing list