X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fnet_socket.c;h=8a733896780ea7c589f53125d81482c888903c61;hb=f4851be7f5dade24a5f43d366188c033c0f8b426;hp=4316e2d6c86a2b8b73e35668191128f1cc27fb26;hpb=1b30cee086148975886f961aadc26e23b1bfd6f2;p=tinc diff --git a/src/net_socket.c b/src/net_socket.c index 4316e2d6..8a733896 100644 --- a/src/net_socket.c +++ b/src/net_socket.c @@ -413,21 +413,6 @@ begin: return; } -void handle_meta_read(struct bufferevent *event, void *data) { - logger(LOG_ERR, "handle_meta_read() called"); - abort(); -} - -void handle_meta_write(struct bufferevent *event, void *data) { - ifdebug(META) logger(LOG_DEBUG, "handle_meta_write() called"); -} - -void handle_meta_connection_error(struct bufferevent *event, short what, void *data) { - connection_t *c = data; - logger(LOG_ERR, "handle_meta_connection_error() called: %d: %s", what, strerror(errno)); - terminate_connection(c, c->status.active); -} - void setup_outgoing_connection(outgoing_t *outgoing) { connection_t *c; node_t *n; @@ -469,13 +454,6 @@ void setup_outgoing_connection(outgoing_t *outgoing) { do_outgoing_connection(c); - c->buffer = bufferevent_new(c->socket, handle_meta_read, handle_meta_write, handle_meta_connection_error, c); - if(!c->buffer) { - logger(LOG_ERR, "bufferevent_new() failed: %s", strerror(errno)); - abort(); - } - bufferevent_disable(c->buffer, EV_READ); - if(!thread_create(&c->thread, handle_meta_connection_data, c)) { logger(LOG_ERR, "create_thread() failed: %s", strerror(errno)); abort(); @@ -486,52 +464,48 @@ void setup_outgoing_connection(outgoing_t *outgoing) { accept a new tcp connect and create a new connection */ -void handle_new_meta_connection(int sock, short events, void *data) { +void handle_new_meta_connection(void *data) { + listen_socket_t *l = data; connection_t *c; sockaddr_t sa; int fd; socklen_t len = sizeof sa; - fd = accept(sock, &sa.sa, &len); + while(true) { + fd = accept(l->tcp, &sa.sa, &len); - if(fd < 0) { - logger(LOG_ERR, "Accepting a new connection failed: %s", sockstrerror(sockerrno)); - return; - } + if(fd < 0) { + logger(LOG_ERR, "Accepting a new connection failed: %s", sockstrerror(sockerrno)); + return; + } - sockaddrunmap(&sa); + sockaddrunmap(&sa); - c = new_connection(); - c->name = xstrdup(""); - c->outcipher = myself->connection->outcipher; - c->outdigest = myself->connection->outdigest; - c->outmaclength = myself->connection->outmaclength; - c->outcompression = myself->connection->outcompression; + c = new_connection(); + c->name = xstrdup(""); + c->outcipher = myself->connection->outcipher; + c->outdigest = myself->connection->outdigest; + c->outmaclength = myself->connection->outmaclength; + c->outcompression = myself->connection->outcompression; - c->address = sa; - c->hostname = sockaddr2hostname(&sa); - c->socket = fd; - c->last_ping_time = time(NULL); + c->address = sa; + c->hostname = sockaddr2hostname(&sa); + c->socket = fd; + c->last_ping_time = time(NULL); - ifdebug(CONNECTIONS) logger(LOG_NOTICE, "Connection from %s", c->hostname); + ifdebug(CONNECTIONS) logger(LOG_NOTICE, "Connection from %s", c->hostname); - c->buffer = bufferevent_new(c->socket, NULL, handle_meta_write, handle_meta_connection_error, c); - if(!c->buffer) { - logger(LOG_ERR, "bufferevent_new() failed: %s", strerror(errno)); - abort(); - } - bufferevent_disable(c->buffer, EV_READ); - - configure_tcp(c); + configure_tcp(c); - connection_add(c); + connection_add(c); - c->allow_request = ID; - send_id(c); + c->allow_request = ID; + send_id(c); - if(!thread_create(&c->thread, handle_meta_connection_data, c)) { - logger(LOG_ERR, "create_thread() failed: %s", strerror(errno)); - abort(); + if(!thread_create(&c->thread, handle_meta_connection_data, c)) { + logger(LOG_ERR, "create_thread() failed: %s", strerror(errno)); + abort(); + } } }