+ return false;
+ }
+
+ //unlink(controlsocketname);
+ result = bind(control_socket, (struct sockaddr *)&addr, sizeof addr);
+
+ if(result < 0 && errno == EADDRINUSE) {
+ result = connect(control_socket, (struct sockaddr *)&addr, sizeof addr);
+ if(result < 0) {
+ logger(LOG_WARNING, _("Removing old control socket."));
+ unlink(controlsocketname);
+ result = bind(control_socket, (struct sockaddr *)&addr, sizeof addr);
+ } else {
+ close(control_socket);
+ if(netname)
+ logger(LOG_ERR, _("Another tincd is already running for net `%s'."), netname);
+ else
+ logger(LOG_ERR, _("Another tincd is already running."));
+ return false;
+ }