- if(receive_meta(c) < 0) {
- terminate_connection(c, c->status.active);
- continue;
- }
+void handle_meta_connection_data(void *data) {
+ connection_t *c = data;
+ int result;
+ socklen_t len = sizeof result;
+
+ while(c->status.connecting) {
+ result = connect(c->socket, &c->address.sa, SALEN(c->address.sa));
+
+ if(!result) {
+ mutex_lock(&mutex);
+ c->status.connecting = false;
+ finish_connecting(c);
+ mutex_unlock(&mutex);
+ } else {
+ ifdebug(CONNECTIONS) logger(LOG_DEBUG,
+ "Error while connecting to %s (%s): %s",
+ c->name, c->hostname, sockstrerror(result));
+ closesocket(c->socket);
+ c->status.connecting = false;
+ mutex_lock(&mutex);
+ do_outgoing_connection(c);
+ mutex_unlock(&mutex);