diff options
Diffstat (limited to 'pr/src/misc/prnetdb.c')
-rw-r--r-- | pr/src/misc/prnetdb.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/pr/src/misc/prnetdb.c b/pr/src/misc/prnetdb.c index f31374b3..6c538582 100644 --- a/pr/src/misc/prnetdb.c +++ b/pr/src/misc/prnetdb.c @@ -863,7 +863,7 @@ PR_IMPLEMENT(PRStatus) PR_GetProtoByNumber( } -PR_IMPLEMENT(PRUintn) PR_NetAddrSize(const PRNetAddr* addr) +PRUintn _PR_NetAddrSize(const PRNetAddr* addr) { PRUintn addrsize; @@ -890,7 +890,7 @@ PR_IMPLEMENT(PRUintn) PR_NetAddrSize(const PRNetAddr* addr) else addrsize = 0; return addrsize; -} /* PR_NetAddrSize */ +} /* _PR_NetAddrSize */ PR_IMPLEMENT(PRIntn) PR_EnumerateHostEnt( PRIntn enumIndex, const PRHostEnt *hostEnt, PRUint16 port, PRNetAddr *address) @@ -924,6 +924,7 @@ PR_IMPLEMENT(PRStatus) PR_InitializeNetAddr( PRStatus rv = PR_SUCCESS; if (!_pr_initialized) _PR_ImplicitInitialization(); + if (val != PR_IpAddrNull) memset(addr, 0, sizeof(addr->inet)); addr->inet.family = AF_INET; addr->inet.port = htons(port); switch (val) @@ -949,9 +950,10 @@ PR_IMPLEMENT(PRStatus) PR_SetNetAddr( PRStatus rv = PR_SUCCESS; if (!_pr_initialized) _PR_ImplicitInitialization(); - addr->raw.family = af; if (af == PR_AF_INET6) { + if (val != PR_IpAddrNull) memset(addr, 0, sizeof(addr->ipv6)); + addr->ipv6.family = af; addr->ipv6.port = htons(port); addr->ipv6.flowinfo = 0; addr->ipv6.scope_id = 0; @@ -972,6 +974,8 @@ PR_IMPLEMENT(PRStatus) PR_SetNetAddr( } else { + if (val != PR_IpAddrNull) memset(addr, 0, sizeof(addr->inet)); + addr->inet.family = af; addr->inet.port = htons(port); switch (val) { |