librb: add rb_{set,clear}_cloexec
This commit is contained in:
parent
4ce7aa6f70
commit
34a2afbc28
3 changed files with 48 additions and 0 deletions
|
@ -118,6 +118,8 @@ void rb_note(rb_fde_t *, const char *);
|
||||||
#define RB_SSL_CERTFP_LEN_SHA512 64
|
#define RB_SSL_CERTFP_LEN_SHA512 64
|
||||||
|
|
||||||
int rb_set_nb(rb_fde_t *);
|
int rb_set_nb(rb_fde_t *);
|
||||||
|
int rb_set_cloexec(rb_fde_t *);
|
||||||
|
int rb_clear_cloexec(rb_fde_t *);
|
||||||
int rb_set_buffers(rb_fde_t *, int);
|
int rb_set_buffers(rb_fde_t *, int);
|
||||||
|
|
||||||
int rb_get_sockerr(rb_fde_t *);
|
int rb_get_sockerr(rb_fde_t *);
|
||||||
|
|
|
@ -260,6 +260,50 @@ rb_set_nb(rb_fde_t *F)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
rb_set_cloexec(rb_fde_t *F)
|
||||||
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
SetHandleInformation((HANDLE) F->fd, HANDLE_FLAG_INHERIT, 0);
|
||||||
|
#else
|
||||||
|
int res;
|
||||||
|
rb_platform_fd_t fd;
|
||||||
|
if(F == NULL)
|
||||||
|
return 0;
|
||||||
|
fd = F->fd;
|
||||||
|
|
||||||
|
res = fcntl(fd, F_GETFD, NULL);
|
||||||
|
if(res == -1)
|
||||||
|
return 0;
|
||||||
|
if(fcntl(fd, F_SETFD, res | FD_CLOEXEC) == -1)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
rb_clear_cloexec(rb_fde_t *F)
|
||||||
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
SetHandleInformation((HANDLE) F->fd, HANDLE_FLAG_INHERIT, 1);
|
||||||
|
#else
|
||||||
|
int res;
|
||||||
|
rb_platform_fd_t fd;
|
||||||
|
if(F == NULL)
|
||||||
|
return 0;
|
||||||
|
fd = F->fd;
|
||||||
|
|
||||||
|
res = fcntl(fd, F_GETFD, NULL);
|
||||||
|
if(res == -1)
|
||||||
|
return 0;
|
||||||
|
if(fcntl(fd, F_SETFD, res & ~FD_CLOEXEC) == -1)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* rb_settimeout() - set the socket timeout
|
* rb_settimeout() - set the socket timeout
|
||||||
*
|
*
|
||||||
|
|
|
@ -13,6 +13,7 @@ rb_bh_usage
|
||||||
rb_bh_usage_all
|
rb_bh_usage_all
|
||||||
rb_bind
|
rb_bind
|
||||||
rb_checktimeouts
|
rb_checktimeouts
|
||||||
|
rb_clear_cloexec
|
||||||
rb_clear_patricia
|
rb_clear_patricia
|
||||||
rb_close
|
rb_close
|
||||||
rb_connect_sockaddr
|
rb_connect_sockaddr
|
||||||
|
@ -153,6 +154,7 @@ rb_sctp_bindx
|
||||||
rb_select
|
rb_select
|
||||||
rb_send_fd_buf
|
rb_send_fd_buf
|
||||||
rb_set_buffers
|
rb_set_buffers
|
||||||
|
rb_set_cloexec
|
||||||
rb_set_nb
|
rb_set_nb
|
||||||
rb_set_time
|
rb_set_time
|
||||||
rb_set_type
|
rb_set_type
|
||||||
|
|
Loading…
Reference in a new issue