return -1;
/* set socket options */
- net_set_nonblock(fd, TRUE);
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &opt, sizeof(opt));
if (fd == -1)
return -1;
- /* set socket options */
- net_set_nonblock(fd, TRUE);
-
/* connect */
ret = connect(fd, (struct sockaddr *) &sa, sizeof(sa));
if (ret < 0 && errno != EINPROGRESS) {
return -1;
/* set socket options */
- net_set_nonblock(fd, TRUE);
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &opt, sizeof(opt));
if (fd == -1)
return -1;
- /* set socket options */
- net_set_nonblock(fd, TRUE);
-
/* bind */
if (bind(fd, (struct sockaddr *) &sa, sizeof(sa)) == 0) {
/* start listening */
if (addr != NULL) sin_get_ip(&so, addr);
if (port != NULL) *port = sin_get_port(&so);
- net_set_nonblock(ret, TRUE);
return ret;
}
return NULL;
}
- /* we depend on auth process - if it's slow, just wait */
- net_set_nonblock(fd, FALSE);
+ /* use blocking connection since we depend on auth process -
+ if it's slow, just wait */
conn = i_new(struct auth_connection, 1);
conn->refcount = 1;
group->listen_fd = net_listen_unix(path);
if (group->listen_fd < 0)
i_fatal("Can't listen in UNIX socket %s: %m", path);
+ net_set_nonblock(group->listen_fd, TRUE);
fd_close_on_exec(group->listen_fd, TRUE);
/* set correct permissions */
*fd = port == 0 ? dup(null_fd) : net_listen(ip, &port);
if (*fd == -1)
i_fatal("listen(%d) failed: %m", port);
+ net_set_nonblock(*fd, TRUE);
fd_close_on_exec(*fd, TRUE);
}