rpcrt4: The error code RPC_S_SERVER_UNAVAILABLE doesn't make much sense on the server side
so replace it with some more appropriate endpoint error codes.
This commit is contained in:
parent
8b6c30ab4b
commit
34577de406
|
@ -125,7 +125,7 @@ static RPC_STATUS rpcrt4_conn_listen_pipe(RpcConnection_np *npc)
|
||||||
return RPC_S_OK;
|
return RPC_S_OK;
|
||||||
}
|
}
|
||||||
npc->listening = FALSE;
|
npc->listening = FALSE;
|
||||||
return RPC_S_SERVER_UNAVAILABLE;
|
return RPC_S_OUT_OF_RESOURCES;
|
||||||
}
|
}
|
||||||
|
|
||||||
static RPC_STATUS rpcrt4_conn_create_pipe(RpcConnection *Connection, LPCSTR pname)
|
static RPC_STATUS rpcrt4_conn_create_pipe(RpcConnection *Connection, LPCSTR pname)
|
||||||
|
@ -139,7 +139,10 @@ static RPC_STATUS rpcrt4_conn_create_pipe(RpcConnection *Connection, LPCSTR pnam
|
||||||
RPC_MAX_PACKET_SIZE, RPC_MAX_PACKET_SIZE, 5000, NULL);
|
RPC_MAX_PACKET_SIZE, RPC_MAX_PACKET_SIZE, 5000, NULL);
|
||||||
if (npc->pipe == INVALID_HANDLE_VALUE) {
|
if (npc->pipe == INVALID_HANDLE_VALUE) {
|
||||||
WARN("CreateNamedPipe failed with error %ld\n", GetLastError());
|
WARN("CreateNamedPipe failed with error %ld\n", GetLastError());
|
||||||
return RPC_S_SERVER_UNAVAILABLE;
|
if (GetLastError() == ERROR_FILE_EXISTS)
|
||||||
|
return RPC_S_DUPLICATE_ENDPOINT;
|
||||||
|
else
|
||||||
|
return RPC_S_CANT_CREATE_ENDPOINT;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(&npc->ovl, 0, sizeof(npc->ovl));
|
memset(&npc->ovl, 0, sizeof(npc->ovl));
|
||||||
|
@ -727,7 +730,7 @@ static RPC_STATUS rpcrt4_ncacn_ip_tcp_open(RpcConnection* Connection)
|
||||||
|
|
||||||
static RPC_STATUS rpcrt4_protseq_ncacn_ip_tcp_open_endpoint(RpcServerProtseq *protseq, LPSTR endpoint)
|
static RPC_STATUS rpcrt4_protseq_ncacn_ip_tcp_open_endpoint(RpcServerProtseq *protseq, LPSTR endpoint)
|
||||||
{
|
{
|
||||||
RPC_STATUS status;
|
RPC_STATUS status = RPC_S_CANT_CREATE_ENDPOINT;
|
||||||
int sock;
|
int sock;
|
||||||
int ret;
|
int ret;
|
||||||
struct addrinfo *ai;
|
struct addrinfo *ai;
|
||||||
|
@ -750,7 +753,9 @@ static RPC_STATUS rpcrt4_protseq_ncacn_ip_tcp_open_endpoint(RpcServerProtseq *pr
|
||||||
{
|
{
|
||||||
ERR("getaddrinfo for port %s failed: %s\n", endpoint,
|
ERR("getaddrinfo for port %s failed: %s\n", endpoint,
|
||||||
gai_strerror(ret));
|
gai_strerror(ret));
|
||||||
return RPC_S_SERVER_UNAVAILABLE;
|
if ((ret == EAI_SERVICE) || (ret == EAI_NONAME))
|
||||||
|
return RPC_S_INVALID_ENDPOINT_FORMAT;
|
||||||
|
return RPC_S_CANT_CREATE_ENDPOINT;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (ai_cur = ai; ai_cur; ai_cur = ai_cur->ai_next)
|
for (ai_cur = ai; ai_cur; ai_cur = ai_cur->ai_next)
|
||||||
|
@ -770,6 +775,7 @@ static RPC_STATUS rpcrt4_protseq_ncacn_ip_tcp_open_endpoint(RpcServerProtseq *pr
|
||||||
if (sock < 0)
|
if (sock < 0)
|
||||||
{
|
{
|
||||||
WARN("socket() failed: %s\n", strerror(errno));
|
WARN("socket() failed: %s\n", strerror(errno));
|
||||||
|
status = RPC_S_CANT_CREATE_ENDPOINT;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -778,6 +784,10 @@ static RPC_STATUS rpcrt4_protseq_ncacn_ip_tcp_open_endpoint(RpcServerProtseq *pr
|
||||||
{
|
{
|
||||||
WARN("bind failed: %s\n", strerror(errno));
|
WARN("bind failed: %s\n", strerror(errno));
|
||||||
close(sock);
|
close(sock);
|
||||||
|
if (errno == EADDRINUSE)
|
||||||
|
status = RPC_S_DUPLICATE_ENDPOINT;
|
||||||
|
else
|
||||||
|
status = RPC_S_CANT_CREATE_ENDPOINT;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
status = RPCRT4_CreateConnection((RpcConnection **)&tcpc, TRUE,
|
status = RPCRT4_CreateConnection((RpcConnection **)&tcpc, TRUE,
|
||||||
|
@ -794,6 +804,7 @@ static RPC_STATUS rpcrt4_protseq_ncacn_ip_tcp_open_endpoint(RpcServerProtseq *pr
|
||||||
{
|
{
|
||||||
WARN("listen failed: %s\n", strerror(errno));
|
WARN("listen failed: %s\n", strerror(errno));
|
||||||
close(sock);
|
close(sock);
|
||||||
|
status = RPC_S_OUT_OF_RESOURCES;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
/* need a non-blocking socket, otherwise accept() has a potential
|
/* need a non-blocking socket, otherwise accept() has a potential
|
||||||
|
@ -805,6 +816,7 @@ static RPC_STATUS rpcrt4_protseq_ncacn_ip_tcp_open_endpoint(RpcServerProtseq *pr
|
||||||
{
|
{
|
||||||
WARN("couldn't make socket non-blocking, error %d\n", ret);
|
WARN("couldn't make socket non-blocking, error %d\n", ret);
|
||||||
close(sock);
|
close(sock);
|
||||||
|
status = RPC_S_OUT_OF_RESOURCES;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
tcpc->sock = sock;
|
tcpc->sock = sock;
|
||||||
|
@ -822,7 +834,7 @@ static RPC_STATUS rpcrt4_protseq_ncacn_ip_tcp_open_endpoint(RpcServerProtseq *pr
|
||||||
|
|
||||||
freeaddrinfo(ai);
|
freeaddrinfo(ai);
|
||||||
ERR("couldn't listen on port %s\n", endpoint);
|
ERR("couldn't listen on port %s\n", endpoint);
|
||||||
return RPC_S_SERVER_UNAVAILABLE;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
static RPC_STATUS rpcrt4_conn_tcp_handoff(RpcConnection *old_conn, RpcConnection *new_conn)
|
static RPC_STATUS rpcrt4_conn_tcp_handoff(RpcConnection *old_conn, RpcConnection *new_conn)
|
||||||
|
@ -838,7 +850,7 @@ static RPC_STATUS rpcrt4_conn_tcp_handoff(RpcConnection *old_conn, RpcConnection
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
ERR("Failed to accept a TCP connection: error %d\n", ret);
|
ERR("Failed to accept a TCP connection: error %d\n", ret);
|
||||||
return RPC_S_SERVER_UNAVAILABLE;
|
return RPC_S_OUT_OF_RESOURCES;
|
||||||
}
|
}
|
||||||
/* reset to blocking behaviour */
|
/* reset to blocking behaviour */
|
||||||
fcntl(ret, F_SETFL, 0);
|
fcntl(ret, F_SETFL, 0);
|
||||||
|
|
Loading…
Reference in New Issue