- if(control_socket < 0) {
- logger(LOG_ERR, _("Creating UNIX socket failed: %s"), strerror(errno));
- 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;
- }
- }
-
- if(result < 0) {
- logger(LOG_ERR, _("Can't bind to %s: %s\n"), controlsocketname, strerror(errno));
- close(control_socket);
- return false;
- }
-
- if(listen(control_socket, 3) < 0) {
- logger(LOG_ERR, _("Can't listen on %s: %s\n"), controlsocketname, strerror(errno));
- close(control_socket);
- return false;
- }
+ if(getsockname(listen_socket[0].tcp, (struct sockaddr *)&sa, &len))
+ xasprintf(&localhost, "127.0.0.1 port %d", myport);
+ else
+ localhost = sockaddr2hostname(&sa);