diff options
| author | Julian Elischer <julian@FreeBSD.org> | 1998-02-05 21:16:52 +0000 |
|---|---|---|
| committer | Julian Elischer <julian@FreeBSD.org> | 1998-02-05 21:16:52 +0000 |
| commit | eb45f34378a1a3602869a961baf51df402974ba3 (patch) | |
| tree | 0f2e44e6b1bf26e772e6583f84e86bace14db3fa /lib | |
| parent | e28be89140365b0f6ffb18c77e2f0836e10e4a21 (diff) | |
Notes
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/libc_r/uthread/uthread_accept.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/libc_r/uthread/uthread_accept.c b/lib/libc_r/uthread/uthread_accept.c index e240cdecbf43..1078bfe06603 100644 --- a/lib/libc_r/uthread/uthread_accept.c +++ b/lib/libc_r/uthread/uthread_accept.c @@ -76,9 +76,6 @@ accept(int fd, struct sockaddr * name, int *namelen) } } - /* Unlock the file descriptor: */ - _thread_fd_unlock(fd, FD_RDWR); - /* Check for errors: */ if (ret < 0) { } @@ -90,6 +87,19 @@ accept(int fd, struct sockaddr * name, int *namelen) /* Return an error: */ ret = -1; } + /* + * If the parent socket was blocking, make sure that + * the new socket is also set blocking here (as the + * call to _thread_fd_table_init() above will always + * set the new socket flags to non-blocking, as that + * will be the inherited state of the new socket. + */ + if((_thread_fd_table[fd]->flags & O_NONBLOCK) == 0) + _thread_fd_table[ret]->flags &= ~O_NONBLOCK; + + /* Unlock the file descriptor: */ + _thread_fd_unlock(fd, FD_RDWR); + } /* Return the socket file descriptor or -1 on error: */ return (ret); |
