if ((err == EAGAIN) || (err == EWOULDBLOCK)) {
if ((err == EAGAIN) || (err == EWOULDBLOCK) || (err == ECONNABORTED)) {
PRInt32 _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;            }            if (!_PR_IS_NATIVE_THREAD(me)) {				if ((rv = local_io_wait(osfd, _PR_UNIX_POLL_READ, timeout)) < 0)					goto done;            } else {                if ((rv = socket_io_wait(osfd, READ_FD, timeout)) < 0)                    goto done;            }        } else if ((err == EINTR) && (!_PR_PENDING_INTERRUPT(me))){            continue;        } else {            break;        }    }    if (rv < 0) {        _PR_MD_MAP_ACCEPT_ERROR(err);    }done:#ifdef _PR_HAVE_SOCKADDR_LEN    if (rv != -1) {        /* ignore the sa_len field of struct sockaddr */        if (addr) {            addr->raw.family = ((struct sockaddr *) addr)->sa_family;        }    }#endif /* _PR_HAVE_SOCKADDR_LEN */    return(rv);}