if (addr) { *((unsigned char *) addr) = 0;
if (addr) { addr->raw.family = ((struct sockaddr *) addr)->sa_family;
_MD_accept (PRFileDesc *fd, PRNetAddr *addr, PRUint32 *addrlen,            PRIntervalTime timeout){    PRInt32 osfd = fd->secret->md.osfd;    PRInt32 rv, err;    PRThread *me = _PR_MD_CURRENT_THREAD();    while ((rv = accept(osfd, (struct sockaddr *) addr,		    (_PRSockLen_t *)addrlen)) == -1) {	err = _MD_ERRNO();	if ((err == EAGAIN) || (err == EWOULDBLOCK)) {	    if (fd->secret->nonblocking) {		    break;	    }#ifndef BONE_VERSION	    /* If it's SUPPOSED to be a blocking thread, wait	     * a while to see if the triggering condition gets	     * satisfied.	     */	    /* Assume that we're always using a native thread */#endif	    if ((rv = socket_io_wait(osfd, READ_FD, timeout)) < 0)		goto done;	} else if ((err == EINTR) && (!_PR_PENDING_INTERRUPT(me))) {	    continue;	} else {	    break;	}    }#ifndef BONE_VERSION    if (addr) addr->raw.family = AF_INET;#endif    if (rv < 0) {		_PR_MD_MAP_ACCEPT_ERROR(err);    }done:#ifndef BONE_VERSION#ifdef _PR_HAVE_SOCKADDR_LEN    if (rv != -1) {	/* Mask off the first byte of struct sockaddr (the length field) */	if (addr) {	    *((unsigned char *) addr) = 0;#ifdef IS_LITTLE_ENDIAN	    addr->raw.family = ntohs(addr->raw.family);#endif	}    }#endif /* _PR_HAVE_SOCKADDR_LEN */#endif /* !BONE_VERSION */    return(rv);}