Module: wine Branch: refs/heads/master Commit: 0fad0895d7b5e49298f4488a1920aeb4a275ce61 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=0fad0895d7b5e49298f4488a...
Author: Robert Shearman rob@codeweavers.com Date: Fri Jun 2 20:46:29 2006 +0100
rpcrt4: Don't try to resolve the name when constructing a protocol tower.
Instead just fill it in with all zeros.
---
dlls/rpcrt4/rpc_transport.c | 10 +++++++--- dlls/rpcrt4/tests/rpc.c | 10 ++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/dlls/rpcrt4/rpc_transport.c b/dlls/rpcrt4/rpc_transport.c index 1a574d2..b50f839 100644 --- a/dlls/rpcrt4/rpc_transport.c +++ b/dlls/rpcrt4/rpc_transport.c @@ -584,7 +584,7 @@ static size_t rpcrt4_ncacn_ip_tcp_get_to ipv4_floor->protid = EPM_PROTOCOL_IP; ipv4_floor->count_rhs = sizeof(ipv4_floor->ipv4addr);
- hints.ai_flags = 0; + hints.ai_flags = AI_NUMERICHOST; /* FIXME: only support IPv4 at the moment. how is IPv6 represented by the EPM? */ hints.ai_family = PF_INET; hints.ai_socktype = SOCK_STREAM; @@ -597,8 +597,12 @@ static size_t rpcrt4_ncacn_ip_tcp_get_to ret = getaddrinfo(networkaddr, endpoint, &hints, &ai); if (ret < 0) { - ERR("getaddrinfo failed: %s\n", gai_strerror(ret)); - return 0; + ret = getaddrinfo("0.0.0.0", endpoint, &hints, &ai); + if (ret < 0) + { + ERR("getaddrinfo failed: %s\n", gai_strerror(ret)); + return 0; + } }
if (ai->ai_family == PF_INET) diff --git a/dlls/rpcrt4/tests/rpc.c b/dlls/rpcrt4/tests/rpc.c index 03dc792..e19844b 100644 --- a/dlls/rpcrt4/tests/rpc.c +++ b/dlls/rpcrt4/tests/rpc.c @@ -270,6 +270,16 @@ static void test_towers(void) ok(ret == RPC_S_OK, "TowerExplode failed with error %ld\n", ret);
I_RpcFree(tower); + + /* test the behaviour for ip_tcp with name instead of dotted IP notation */ + ret = TowerConstruct(&mapi_if_id, &ndr_syntax, "ncacn_ip_tcp", "135", "localhost", &tower); + ok(ret == RPC_S_OK, "TowerConstruct failed with error %ld\n", ret); + ret = TowerExplode(tower, NULL, NULL, NULL, NULL, &address); + ok(ret == RPC_S_OK, "TowerExplode failed with error %ld\n", ret); + ok(!strcmp(address, "0.0.0.0"), "address was "%s" instead of "0.0.0.0"\n", address); + + I_RpcFree(address); + I_RpcFree(tower); }
START_TEST( rpc )