mirror of
https://github.com/reactos/wine.git
synced 2024-11-25 20:59:54 +00:00
rpcrt4: Convert the named pipe server code to look directly into the
connection to get at the wait handles, instead of using get_connect_wait_handle which isn't generic enough to be used for other protocols. Remove the unneeded get_connect_wait_handle function from the connection operations function list.
This commit is contained in:
parent
7553a8990c
commit
593d0fbac0
@ -66,7 +66,6 @@ struct connection_ops {
|
|||||||
unsigned char epm_protocols[2]; /* only floors 3 and 4. see http://www.opengroup.org/onlinepubs/9629399/apdxl.htm */
|
unsigned char epm_protocols[2]; /* only floors 3 and 4. see http://www.opengroup.org/onlinepubs/9629399/apdxl.htm */
|
||||||
RpcConnection *(*alloc)(void);
|
RpcConnection *(*alloc)(void);
|
||||||
RPC_STATUS (*open_connection)(RpcConnection *conn);
|
RPC_STATUS (*open_connection)(RpcConnection *conn);
|
||||||
HANDLE (*get_connect_wait_handle)(RpcConnection *conn);
|
|
||||||
RPC_STATUS (*handoff)(RpcConnection *old_conn, RpcConnection *new_conn);
|
RPC_STATUS (*handoff)(RpcConnection *old_conn, RpcConnection *new_conn);
|
||||||
int (*read)(RpcConnection *conn, void *buffer, unsigned int len);
|
int (*read)(RpcConnection *conn, void *buffer, unsigned int len);
|
||||||
int (*write)(RpcConnection *conn, const void *buffer, unsigned int len);
|
int (*write)(RpcConnection *conn, const void *buffer, unsigned int len);
|
||||||
@ -150,11 +149,6 @@ static inline int rpcrt4_conn_close(RpcConnection *Connection)
|
|||||||
return Connection->ops->close(Connection);
|
return Connection->ops->close(Connection);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline HANDLE rpcrt4_conn_get_wait_object(RpcConnection *Connection)
|
|
||||||
{
|
|
||||||
return Connection->ops->get_connect_wait_handle(Connection);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline RPC_STATUS rpcrt4_conn_handoff(RpcConnection *old_conn, RpcConnection *new_conn)
|
static inline RPC_STATUS rpcrt4_conn_handoff(RpcConnection *old_conn, RpcConnection *new_conn)
|
||||||
{
|
{
|
||||||
return old_conn->ops->handoff(old_conn, new_conn);
|
return old_conn->ops->handoff(old_conn, new_conn);
|
||||||
|
@ -221,12 +221,6 @@ static RPC_STATUS rpcrt4_ncacn_np_open(RpcConnection* Connection)
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HANDLE rpcrt4_conn_np_get_connect_event(RpcConnection *Connection)
|
|
||||||
{
|
|
||||||
RpcConnection_np *npc = (RpcConnection_np *) Connection;
|
|
||||||
return npc->ovl.hEvent;
|
|
||||||
}
|
|
||||||
|
|
||||||
static RPC_STATUS rpcrt4_conn_np_handoff(RpcConnection *old_conn, RpcConnection *new_conn)
|
static RPC_STATUS rpcrt4_conn_np_handoff(RpcConnection *old_conn, RpcConnection *new_conn)
|
||||||
{
|
{
|
||||||
RpcConnection_np *old_npc = (RpcConnection_np *) old_conn;
|
RpcConnection_np *old_npc = (RpcConnection_np *) old_conn;
|
||||||
@ -406,19 +400,19 @@ static void rpcrt4_protseq_np_signal_state_changed(RpcServerProtseq *protseq)
|
|||||||
static void *rpcrt4_protseq_np_get_wait_array(RpcServerProtseq *protseq, void *prev_array, unsigned int *count)
|
static void *rpcrt4_protseq_np_get_wait_array(RpcServerProtseq *protseq, void *prev_array, unsigned int *count)
|
||||||
{
|
{
|
||||||
HANDLE *objs = prev_array;
|
HANDLE *objs = prev_array;
|
||||||
RpcConnection* conn;
|
RpcConnection_np *conn;
|
||||||
RpcServerProtseq_np *npps = CONTAINING_RECORD(protseq, RpcServerProtseq_np, common);
|
RpcServerProtseq_np *npps = CONTAINING_RECORD(protseq, RpcServerProtseq_np, common);
|
||||||
|
|
||||||
EnterCriticalSection(&protseq->cs);
|
EnterCriticalSection(&protseq->cs);
|
||||||
|
|
||||||
/* open and count connections */
|
/* open and count connections */
|
||||||
*count = 1;
|
*count = 1;
|
||||||
conn = protseq->conn;
|
conn = CONTAINING_RECORD(protseq->conn, RpcConnection_np, common);
|
||||||
while (conn) {
|
while (conn) {
|
||||||
RPCRT4_OpenConnection(conn);
|
RPCRT4_OpenConnection(&conn->common);
|
||||||
if (rpcrt4_conn_get_wait_object(conn))
|
if (conn->ovl.hEvent)
|
||||||
(*count)++;
|
(*count)++;
|
||||||
conn = conn->Next;
|
conn = CONTAINING_RECORD(conn->common.Next, RpcConnection_np, common);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* make array of connections */
|
/* make array of connections */
|
||||||
@ -435,11 +429,11 @@ static void *rpcrt4_protseq_np_get_wait_array(RpcServerProtseq *protseq, void *p
|
|||||||
|
|
||||||
objs[0] = npps->mgr_event;
|
objs[0] = npps->mgr_event;
|
||||||
*count = 1;
|
*count = 1;
|
||||||
conn = protseq->conn;
|
conn = CONTAINING_RECORD(protseq->conn, RpcConnection_np, common);
|
||||||
while (conn) {
|
while (conn) {
|
||||||
if ((objs[*count] = rpcrt4_conn_get_wait_object(conn)))
|
if ((objs[*count] = conn->ovl.hEvent))
|
||||||
(*count)++;
|
(*count)++;
|
||||||
conn = conn->Next;
|
conn = CONTAINING_RECORD(conn->common.Next, RpcConnection_np, common);
|
||||||
}
|
}
|
||||||
LeaveCriticalSection(&protseq->cs);
|
LeaveCriticalSection(&protseq->cs);
|
||||||
return objs;
|
return objs;
|
||||||
@ -455,8 +449,8 @@ static int rpcrt4_protseq_np_wait_for_new_connection(RpcServerProtseq *protseq,
|
|||||||
HANDLE b_handle;
|
HANDLE b_handle;
|
||||||
HANDLE *objs = wait_array;
|
HANDLE *objs = wait_array;
|
||||||
DWORD res;
|
DWORD res;
|
||||||
RpcConnection* cconn;
|
RpcConnection *cconn;
|
||||||
RpcConnection* conn;
|
RpcConnection_np *conn;
|
||||||
|
|
||||||
if (!objs)
|
if (!objs)
|
||||||
return -1;
|
return -1;
|
||||||
@ -474,14 +468,14 @@ static int rpcrt4_protseq_np_wait_for_new_connection(RpcServerProtseq *protseq,
|
|||||||
b_handle = objs[res - WAIT_OBJECT_0];
|
b_handle = objs[res - WAIT_OBJECT_0];
|
||||||
/* find which connection got a RPC */
|
/* find which connection got a RPC */
|
||||||
EnterCriticalSection(&protseq->cs);
|
EnterCriticalSection(&protseq->cs);
|
||||||
conn = protseq->conn;
|
conn = CONTAINING_RECORD(protseq->conn, RpcConnection_np, common);
|
||||||
while (conn) {
|
while (conn) {
|
||||||
if (b_handle == rpcrt4_conn_get_wait_object(conn)) break;
|
if (b_handle == conn->ovl.hEvent) break;
|
||||||
conn = conn->Next;
|
conn = CONTAINING_RECORD(conn->common.Next, RpcConnection_np, common);
|
||||||
}
|
}
|
||||||
cconn = NULL;
|
cconn = NULL;
|
||||||
if (conn)
|
if (conn)
|
||||||
RPCRT4_SpawnConnection(&cconn, conn);
|
RPCRT4_SpawnConnection(&cconn, &conn->common);
|
||||||
else
|
else
|
||||||
ERR("failed to locate connection for handle %p\n", b_handle);
|
ERR("failed to locate connection for handle %p\n", b_handle);
|
||||||
LeaveCriticalSection(&protseq->cs);
|
LeaveCriticalSection(&protseq->cs);
|
||||||
@ -1004,7 +998,6 @@ static const struct connection_ops conn_protseq_list[] = {
|
|||||||
{ EPM_PROTOCOL_NCACN, EPM_PROTOCOL_SMB },
|
{ EPM_PROTOCOL_NCACN, EPM_PROTOCOL_SMB },
|
||||||
rpcrt4_conn_np_alloc,
|
rpcrt4_conn_np_alloc,
|
||||||
rpcrt4_ncacn_np_open,
|
rpcrt4_ncacn_np_open,
|
||||||
rpcrt4_conn_np_get_connect_event,
|
|
||||||
rpcrt4_conn_np_handoff,
|
rpcrt4_conn_np_handoff,
|
||||||
rpcrt4_conn_np_read,
|
rpcrt4_conn_np_read,
|
||||||
rpcrt4_conn_np_write,
|
rpcrt4_conn_np_write,
|
||||||
@ -1016,7 +1009,6 @@ static const struct connection_ops conn_protseq_list[] = {
|
|||||||
{ EPM_PROTOCOL_NCALRPC, EPM_PROTOCOL_PIPE },
|
{ EPM_PROTOCOL_NCALRPC, EPM_PROTOCOL_PIPE },
|
||||||
rpcrt4_conn_np_alloc,
|
rpcrt4_conn_np_alloc,
|
||||||
rpcrt4_ncalrpc_open,
|
rpcrt4_ncalrpc_open,
|
||||||
rpcrt4_conn_np_get_connect_event,
|
|
||||||
rpcrt4_conn_np_handoff,
|
rpcrt4_conn_np_handoff,
|
||||||
rpcrt4_conn_np_read,
|
rpcrt4_conn_np_read,
|
||||||
rpcrt4_conn_np_write,
|
rpcrt4_conn_np_write,
|
||||||
@ -1028,7 +1020,6 @@ static const struct connection_ops conn_protseq_list[] = {
|
|||||||
{ EPM_PROTOCOL_NCACN, EPM_PROTOCOL_TCP },
|
{ EPM_PROTOCOL_NCACN, EPM_PROTOCOL_TCP },
|
||||||
rpcrt4_conn_tcp_alloc,
|
rpcrt4_conn_tcp_alloc,
|
||||||
rpcrt4_ncacn_ip_tcp_open,
|
rpcrt4_ncacn_ip_tcp_open,
|
||||||
NULL,
|
|
||||||
rpcrt4_conn_tcp_handoff,
|
rpcrt4_conn_tcp_handoff,
|
||||||
rpcrt4_conn_tcp_read,
|
rpcrt4_conn_tcp_read,
|
||||||
rpcrt4_conn_tcp_write,
|
rpcrt4_conn_tcp_write,
|
||||||
|
Loading…
Reference in New Issue
Block a user