diff options
author | wtc%netscape.com <devnull@localhost> | 2000-02-23 23:11:29 +0000 |
---|---|---|
committer | wtc%netscape.com <devnull@localhost> | 2000-02-23 23:11:29 +0000 |
commit | e564b21337b036047c0f51bec49c0312fce7f2f1 (patch) | |
tree | b1bf74cbb393831f03ee3f3e47476fef23705772 | |
parent | 86b40e65b9b56a8eef0afbc9b430e56b0559e2fc (diff) | |
download | nspr-hg-NSPRPUB_RELEASE_4_0_20000223.tar.gz |
Bugzilla bug #28906: miscellaneous fixes, some related to the new ipv6NSPRPUB_RELEASE_4_0_20000223
member of PRNetAddr. (NSPRPUB_RELEASE_4_0_BRANCH)
-rw-r--r-- | pr/src/md/mac/macsockotpt.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/pr/src/md/mac/macsockotpt.c b/pr/src/md/mac/macsockotpt.c index 31a123cd..7b6e4441 100644 --- a/pr/src/md/mac/macsockotpt.c +++ b/pr/src/md/mac/macsockotpt.c @@ -614,6 +614,7 @@ PRInt32 _MD_listen(PRFileDesc *fd, PRIntn backlog) goto ErrorExit; } + addr.inet.family = AF_INET; addr.inet.port = addr.inet.ip = 0; bindReq.addr.maxlen = PR_NETADDR_SIZE (&addr); @@ -697,12 +698,6 @@ PRInt32 _MD_getsockname(PRFileDesc *fd, PRNetAddr *addr, PRUint32 *addrlen) goto ErrorExit; } -#if !defined(_PR_INET6) - addr->inet.family = AF_INET; -#endif - - PR_ASSERT(PR_NETADDR_SIZE(addr) >= (*addrlen)); - bindReq.addr.len = *addrlen; bindReq.addr.maxlen = *addrlen; bindReq.addr.buf = (UInt8*) addr; @@ -726,6 +721,7 @@ PRInt32 _MD_getsockname(PRFileDesc *fd, PRNetAddr *addr, PRUint32 *addrlen) if (err != kOTNoError) goto ErrorExit; + *addrlen = PR_NETADDR_SIZE(addr); return kOTNoError; ErrorExit: @@ -1157,9 +1153,15 @@ PRInt32 _MD_accept(PRFileDesc *fd, PRNetAddr *addr, PRUint32 *addrlen, PRInterva memset(&call, 0 , sizeof(call)); - call.addr.maxlen = PR_NETADDR_SIZE(&callAddr); - call.addr.len = PR_NETADDR_SIZE(&callAddr); - call.addr.buf = (UInt8*) &callAddr; + if (addr != NULL) { + call.addr.maxlen = *addrlen; + call.addr.len = *addrlen; + call.addr.buf = (UInt8*) addr; + } else { + call.addr.maxlen = sizeof(callAddr); + call.addr.len = sizeof(callAddr); + call.addr.buf = (UInt8*) &callAddr; + } do { PrepareForAsyncCompletion(me, fd->secret->md.osfd); @@ -1199,6 +1201,7 @@ PRInt32 _MD_accept(PRFileDesc *fd, PRNetAddr *addr, PRUint32 *addrlen, PRInterva PR_ASSERT(err == kOTNoError); // Bind to a local port; let the system assign it. + bindAddr.inet.family = AF_INET; bindAddr.inet.port = bindAddr.inet.ip = 0; bindReq.addr.maxlen = PR_NETADDR_SIZE (&bindAddr); @@ -1229,8 +1232,6 @@ PRInt32 _MD_accept(PRFileDesc *fd, PRNetAddr *addr, PRUint32 *addrlen, PRInterva if (err != kOTNoError) goto ErrorExit; - if (addr != NULL) - *addr = callAddr; if (addrlen != NULL) *addrlen = call.addr.len; @@ -1270,6 +1271,7 @@ PRInt32 _MD_connect(PRFileDesc *fd, PRNetAddr *addr, PRUint32 addrlen, PRInterva // Bind to a local port; let the system assign it. + bindAddr.inet.family = AF_INET; bindAddr.inet.port = bindAddr.inet.ip = 0; bindReq.addr.maxlen = PR_NETADDR_SIZE (&bindAddr); @@ -1814,7 +1816,7 @@ _MD_getpeername(PRFileDesc *fd, PRNetAddr *addr, PRUint32 *addrlen) TBind peerAddr; OSErr err; - if (*addrlen < PR_NETADDR_SIZE(addr)) { + if (*addrlen < sizeof(InetAddress)) { err = (OSErr) kEINVALErr; goto ErrorExit; |