X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fcontrol.c;h=b62e1439744d3a651dbad6310434c1fbda1f008d;hp=8493f254fe3e7a5287083432412f92a355d54936;hb=c388527e341658dc915dd67c90bbc9b52b8539c0;hpb=5c5548fc7185cc1462602dadcd39a53cef481d29 diff --git a/src/control.c b/src/control.c index 8493f254..b62e1439 100644 --- a/src/control.c +++ b/src/control.c @@ -217,8 +217,15 @@ bool init_control() { addr.sin_family = AF_INET; addr.sin_addr.s_addr = htonl(0x7f000001); addr.sin_port = htons(55555); + int option = 1; control_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + if(control_socket < 0) { + logger(LOG_ERR, "Creating control socket failed: %s", sockstrerror(sockerrno)); + goto bail; + } + + setsockopt(control_socket, SOL_SOCKET, SO_REUSEADDR, &option, sizeof option); #else struct sockaddr_un addr; char *lastslash; @@ -275,8 +282,8 @@ bool init_control() { result = bind(control_socket, (struct sockaddr *)&addr, sizeof addr); if(result < 0 && sockinuse(sockerrno)) { - result = connect(control_socket, (struct sockaddr *)&addr, sizeof addr); #ifndef HAVE_MINGW + result = connect(control_socket, (struct sockaddr *)&addr, sizeof addr); if(result < 0) { logger(LOG_WARNING, "Removing old control socket."); unlink(controlsocketname);