from the send hook without worrying about existence of socket buffers.
Also, don't forget to copy peer addresses.
char *err;
t->type = type;
t->fd = fd;
+ t->ttl = s->ttl;
+ t->tos = s->tos;
+ t->rbsize = s->rbsize;
+ t->tbsize = s->tbsize;
+ if (type == SK_TCP)
+ get_sockaddr((sockaddr *) sa, &t->daddr, &t->dport);
add_tail(&sock_list, &t->n);
- s->rx_hook(t, 0);
if (err = sk_setup(t))
{
log(L_ERR "Incoming connection: %s: %m", err);
- s->err_hook(s, errno);
- return 0;
+ rfree(t);
+ return 1;
}
sk_alloc_bufs(t);
+ s->rx_hook(t, 0);
return 1;
}
else if (errno != EINTR && errno != EAGAIN)
ERR("bind");
if (listen(fd, 8))
ERR("listen");
- sk_alloc_bufs(s);
add_tail(&sock_list, &s->n);
return 0;
s->rx_hook = cli_rx;
s->tx_hook = cli_tx;
s->err_hook = cli_err;
- s->rbsize = 1024;
s->data = c = cli_new(s);
s->pool = c->pool; /* We need to have all the socket buffers allocated in the cli pool */
c->rx_pos = c->rx_buf;
s = cli_sk = sk_new(cli_pool);
s->type = SK_UNIX_PASSIVE;
s->rx_hook = cli_connect;
+ s->rbsize = 1024;
if (sk_open_unix(s, path_control_socket) < 0)
die("Unable to create control socket %s", path_control_socket);
}