{
struct sockaddr_un addr;
NTSTATUS status;
- int socket, bes_result, flags, ret;
+ int socket, ret;
size_t len;
+ bool ok;
ZERO_STRUCT(addr);
addr.sun_family = AF_UNIX;
}
/* We must not block */
- flags = fcntl(socket, F_GETFL);
- if (flags <= 0) {
- /* Handle error by ignoring */;
- flags = 0;
- DBG_WARNING("Could not get flags on socket (%s).\n",
- strerror(errno));
- }
- flags |= SOCK_NONBLOCK;
- ret = fcntl(socket, F_SETFL, flags);
+ ret = set_blocking(socket, false);
if (ret == -1) {
- /* Handle error by ignoring for now */
- DBG_WARNING("Could not set flags on socket: %s.\n",
- strerror(errno));
+ close(socket);
+ io_h->stream = NULL;
+ return false;
}
- bes_result = tstream_bsd_existing_socket(io_h, socket, &io_h->stream);
- if (bes_result < 0) {
+ ok = smb_set_close_on_exec(socket);
+ if (!ok) {
+ close(socket);
+ io_h->stream = NULL;
+ return false;
+ }
+
+ ret = tstream_bsd_existing_socket(io_h, socket, &io_h->stream);
+ if (ret == -1) {
+ close(socket);
DBG_ERR("Could not convert socket to tstream: %s.\n",
strerror(errno));
io_h->stream = NULL;