- flags = fcntl(cl->meta_socket, F_GETFL);
- if(fcntl(cl->meta_socket, F_SETFL, flags | O_NONBLOCK) < 0)
+ */
+
+ /* Optimize TCP settings?
+
+ option = 1;
+ setsockopt(c->socket, SOL_SOCKET, SO_KEEPALIVE, &option, sizeof(option));
+#ifdef HAVE_LINUX
+ setsockopt(c->socket, SOL_TCP, TCP_NODELAY, &option, sizeof(option));
+
+ option = IPTOS_LOWDELAY;
+ setsockopt(c->socket, SOL_IP, IP_TOS, &option, sizeof(option));
+#endif
+
+ */
+
+ /* Connect */
+
+ a.sin_family = AF_INET;
+ a.sin_port = htons(c->port);
+ a.sin_addr.s_addr = htonl(c->address);
+
+ if(connect(c->socket, (struct sockaddr *)&a, sizeof(a)) == -1)
+ {
+ close(c->socket);
+ syslog(LOG_ERR, _("%s port %hd: %m"), c->hostname, c->port);
+ return -1;
+ }
+
+ flags = fcntl(c->socket, F_GETFL);
+
+ if(fcntl(c->socket, F_SETFL, flags | O_NONBLOCK) < 0)