Nikolay Sivov : rpcrt4: Fix RpcMgmtStopServerListening() return value when we're not listening.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Mar 26 11:13:56 CDT 2015
Module: wine
Branch: master
Commit: 73a68b065bec473719d7bcbcdb7387161bbff7e1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=73a68b065bec473719d7bcbcdb7387161bbff7e1
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Wed Mar 25 23:36:46 2015 +0300
rpcrt4: Fix RpcMgmtStopServerListening() return value when we're not listening.
---
dlls/rpcrt4/rpc_server.c | 21 +++++++++++++++------
dlls/rpcrt4/tests/rpc.c | 4 ----
2 files changed, 15 insertions(+), 10 deletions(-)
diff --git a/dlls/rpcrt4/rpc_server.c b/dlls/rpcrt4/rpc_server.c
index 4789d8a..1e22d03 100644
--- a/dlls/rpcrt4/rpc_server.c
+++ b/dlls/rpcrt4/rpc_server.c
@@ -762,9 +762,18 @@ static RPC_STATUS RPCRT4_start_listen(BOOL auto_listen)
return status;
}
-static void RPCRT4_stop_listen(BOOL auto_listen)
+static RPC_STATUS RPCRT4_stop_listen(BOOL auto_listen)
{
+ RPC_STATUS status = RPC_S_OK;
+
EnterCriticalSection(&listen_cs);
+
+ if (!std_listen)
+ {
+ status = RPC_S_NOT_LISTENING;
+ goto done;
+ }
+
if (auto_listen || (--manual_listen_count == 0))
{
if (listen_count != 0 && --listen_count == 0) {
@@ -779,12 +788,14 @@ static void RPCRT4_stop_listen(BOOL auto_listen)
EnterCriticalSection(&listen_cs);
if (listen_done_event) SetEvent( listen_done_event );
listen_done_event = 0;
- LeaveCriticalSection(&listen_cs);
- return;
+ goto done;
}
assert(listen_count >= 0);
}
+
+done:
LeaveCriticalSection(&listen_cs);
+ return status;
}
static BOOL RPCRT4_protseq_is_endpoint_registered(RpcServerProtseq *protseq, const char *endpoint)
@@ -1560,9 +1571,7 @@ RPC_STATUS WINAPI RpcMgmtStopServerListening ( RPC_BINDING_HANDLE Binding )
return RPC_S_WRONG_KIND_OF_BINDING;
}
- RPCRT4_stop_listen(FALSE);
-
- return RPC_S_OK;
+ return RPCRT4_stop_listen(FALSE);
}
/***********************************************************************
diff --git a/dlls/rpcrt4/tests/rpc.c b/dlls/rpcrt4/tests/rpc.c
index 85473f6..400756f 100644
--- a/dlls/rpcrt4/tests/rpc.c
+++ b/dlls/rpcrt4/tests/rpc.c
@@ -224,10 +224,8 @@ static void test_rpc_ncacn_ip_tcp(void)
ok(status == RPC_S_OK, "return wrong\n");
status = RpcMgmtStopServerListening(NULL);
-todo_wine {
ok(status == RPC_S_NOT_LISTENING,
"wrong RpcMgmtStopServerListening error (%u)\n", status);
-}
status = RpcMgmtWaitServerListen();
ok(status == RPC_S_NOT_LISTENING,
@@ -244,9 +242,7 @@ todo_wine {
ok(status == RPC_S_OK, "RpcServerRegisterIf failed (%u)\n", status);
status = RpcServerListen(1, 20, TRUE);
-todo_wine {
ok(status == RPC_S_OK, "RpcServerListen failed (%u)\n", status);
-}
status = RpcServerListen(1, 20, TRUE);
todo_wine {
More information about the wine-cvs
mailing list