rpcrt4: Convert the server interfaces list into a standard Wine list.
This commit is contained in:
parent
59a90143bf
commit
0b1cc1061b
|
@ -68,7 +68,7 @@ static RpcObjTypeMap *RpcObjTypeMaps;
|
||||||
|
|
||||||
/* list of type RpcServerProtseq */
|
/* list of type RpcServerProtseq */
|
||||||
static struct list protseqs = LIST_INIT(protseqs);
|
static struct list protseqs = LIST_INIT(protseqs);
|
||||||
static RpcServerInterface* ifs;
|
static struct list server_interfaces = LIST_INIT(server_interfaces);
|
||||||
|
|
||||||
static CRITICAL_SECTION server_cs;
|
static CRITICAL_SECTION server_cs;
|
||||||
static CRITICAL_SECTION_DEBUG server_cs_debug =
|
static CRITICAL_SECTION_DEBUG server_cs_debug =
|
||||||
|
@ -124,20 +124,19 @@ static RpcServerInterface* RPCRT4_find_interface(UUID* object,
|
||||||
BOOL check_object)
|
BOOL check_object)
|
||||||
{
|
{
|
||||||
UUID* MgrType = NULL;
|
UUID* MgrType = NULL;
|
||||||
RpcServerInterface* cif = NULL;
|
RpcServerInterface* cif;
|
||||||
RPC_STATUS status;
|
RPC_STATUS status;
|
||||||
|
|
||||||
if (check_object)
|
if (check_object)
|
||||||
MgrType = LookupObjType(object);
|
MgrType = LookupObjType(object);
|
||||||
EnterCriticalSection(&server_cs);
|
EnterCriticalSection(&server_cs);
|
||||||
cif = ifs;
|
LIST_FOR_EACH_ENTRY(cif, &server_interfaces, RpcServerInterface, entry) {
|
||||||
while (cif) {
|
|
||||||
if (!memcmp(if_id, &cif->If->InterfaceId, sizeof(RPC_SYNTAX_IDENTIFIER)) &&
|
if (!memcmp(if_id, &cif->If->InterfaceId, sizeof(RPC_SYNTAX_IDENTIFIER)) &&
|
||||||
(check_object == FALSE || UuidEqual(MgrType, &cif->MgrTypeUuid, &status)) &&
|
(check_object == FALSE || UuidEqual(MgrType, &cif->MgrTypeUuid, &status)) &&
|
||||||
std_listen) break;
|
std_listen) break;
|
||||||
cif = cif->Next;
|
|
||||||
}
|
}
|
||||||
LeaveCriticalSection(&server_cs);
|
LeaveCriticalSection(&server_cs);
|
||||||
|
if (&cif->entry == &server_interfaces) cif = NULL;
|
||||||
TRACE("returning %p for %s\n", cif, debugstr_guid(object));
|
TRACE("returning %p for %s\n", cif, debugstr_guid(object));
|
||||||
return cif;
|
return cif;
|
||||||
}
|
}
|
||||||
|
@ -177,7 +176,8 @@ static void RPCRT4_process_packet(RpcConnection* conn, RpcPktHdr* hdr, RPC_MESSA
|
||||||
response = RPCRT4_BuildBindNackHeader(NDR_LOCAL_DATA_REPRESENTATION,
|
response = RPCRT4_BuildBindNackHeader(NDR_LOCAL_DATA_REPRESENTATION,
|
||||||
RPC_VER_MAJOR, RPC_VER_MINOR);
|
RPC_VER_MAJOR, RPC_VER_MINOR);
|
||||||
} else {
|
} else {
|
||||||
TRACE("accepting bind request on connection %p\n", conn);
|
TRACE("accepting bind request on connection %p for %s\n", conn,
|
||||||
|
debugstr_guid(&hdr->bind.abstract.SyntaxGUID));
|
||||||
|
|
||||||
/* accept. */
|
/* accept. */
|
||||||
response = RPCRT4_BuildBindAckHeader(NDR_LOCAL_DATA_REPRESENTATION,
|
response = RPCRT4_BuildBindAckHeader(NDR_LOCAL_DATA_REPRESENTATION,
|
||||||
|
@ -784,8 +784,7 @@ RPC_STATUS WINAPI RpcServerRegisterIf2( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid,
|
||||||
sif->IfCallbackFn = IfCallbackFn;
|
sif->IfCallbackFn = IfCallbackFn;
|
||||||
|
|
||||||
EnterCriticalSection(&server_cs);
|
EnterCriticalSection(&server_cs);
|
||||||
sif->Next = ifs;
|
list_add_head(&server_interfaces, &sif->entry);
|
||||||
ifs = sif;
|
|
||||||
LeaveCriticalSection(&server_cs);
|
LeaveCriticalSection(&server_cs);
|
||||||
|
|
||||||
if (sif->Flags & RPC_IF_AUTOLISTEN)
|
if (sif->Flags & RPC_IF_AUTOLISTEN)
|
||||||
|
|
|
@ -61,7 +61,7 @@ struct protseq_ops
|
||||||
|
|
||||||
typedef struct _RpcServerInterface
|
typedef struct _RpcServerInterface
|
||||||
{
|
{
|
||||||
struct _RpcServerInterface* Next;
|
struct list entry;
|
||||||
RPC_SERVER_INTERFACE* If;
|
RPC_SERVER_INTERFACE* If;
|
||||||
UUID MgrTypeUuid;
|
UUID MgrTypeUuid;
|
||||||
RPC_MGR_EPV* MgrEpv;
|
RPC_MGR_EPV* MgrEpv;
|
||||||
|
|
Loading…
Reference in New Issue