-------------------------------------------------------------------------*\ * Accept with timeout \*-------------------------------------------------------------------------*/
| 180 | * Accept with timeout |
| 181 | \*-------------------------------------------------------------------------*/ |
| 182 | int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len, p_timeout tm) { |
| 183 | if (*ps == SOCKET_INVALID) return IO_CLOSED; |
| 184 | for ( ;; ) { |
| 185 | int err; |
| 186 | if ((*pa = accept(*ps, addr, len)) != SOCKET_INVALID) return IO_DONE; |
| 187 | err = errno; |
| 188 | if (err == EINTR) continue; |
| 189 | if (err != EAGAIN && err != ECONNABORTED) return err; |
| 190 | if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; |
| 191 | } |
| 192 | /* can't reach here */ |
| 193 | return IO_UNKNOWN; |
| 194 | } |
| 195 | |
| 196 | /*-------------------------------------------------------------------------*\ |
| 197 | * Send with timeout |
no test coverage detected