From e1ddd9937759bc22b7241e48400d17840a101d9d Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Wed, 26 Apr 2000 13:26:11 +0000 Subject: Changed handling of incoming connections, so that we can send data from the send hook without worrying about existence of socket buffers. Also, don't forget to copy peer addresses. --- sysdep/unix/io.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'sysdep/unix/io.c') diff --git a/sysdep/unix/io.c b/sysdep/unix/io.c index e50689f..35af2df 100644 --- a/sysdep/unix/io.c +++ b/sysdep/unix/io.c @@ -493,15 +493,21 @@ sk_passive_connected(sock *s, struct sockaddr *sa, int al, int type) 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) @@ -682,7 +688,6 @@ sk_open_unix(sock *s, char *name) ERR("bind"); if (listen(fd, 8)) ERR("listen"); - sk_alloc_bufs(s); add_tail(&sock_list, &s->n); return 0; -- cgit v1.2.3