Choose a different Port when 655 isn't available when doing "tinc join".
[tinc] / src / names.c
index c42b953..a631ad9 100644 (file)
@@ -39,9 +39,12 @@ void make_names(void) {
 #ifdef HAVE_MINGW
        HKEY key;
        char installdir[1024] = "";
-       long len = sizeof installdir;
+       DWORD len = sizeof installdir;
 #endif
 
+       if(netname && confbase)
+               logger(DEBUG_ALWAYS, LOG_INFO, "Both netname and configuration directory given, using the latter...");
+
        if(netname)
                xasprintf(&identname, "tinc.%s", netname);
        else
@@ -49,7 +52,7 @@ void make_names(void) {
 
 #ifdef HAVE_MINGW
        if(!RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\tinc", 0, KEY_READ, &key)) {
-               if(!RegQueryValueEx(key, NULL, 0, 0, installdir, &len)) {
+               if(!RegQueryValueEx(key, NULL, 0, 0, (LPBYTE)installdir, &len)) {
                        confdir = xstrdup(installdir);
                        if(!logfilename)
                                xasprintf(&logfilename, "%s" SLASH "log" SLASH "%s.log", installdir, identname);
@@ -74,16 +77,20 @@ void make_names(void) {
        if(!pidfilename)
                xasprintf(&pidfilename, LOCALSTATEDIR SLASH "run" SLASH "%s.pid", identname);
 
-       if(!unixsocketname)
-               xasprintf(&unixsocketname, LOCALSTATEDIR SLASH "run" SLASH "%s.socket", identname);
+       if(!unixsocketname) {
+               int len = strlen(pidfilename);
+               unixsocketname = xmalloc(len + 8);
+               strcpy(unixsocketname, pidfilename);
+               if(len > 4 && !strcmp(pidfilename + len - 4, ".pid"))
+                       strcpy(unixsocketname + len - 4, ".socket");
+               else
+                       strcpy(unixsocketname + len, ".socket");
+       }
 
-       if(netname) {
-               if(!confbase)
+       if(!confbase) {
+               if(netname)
                        xasprintf(&confbase, CONFDIR SLASH "tinc" SLASH "%s", netname);
                else
-                       logger(DEBUG_ALWAYS, LOG_INFO, "Both netname and configuration directory given, using the latter...");
-       } else {
-               if(!confbase)
                        xasprintf(&confbase, CONFDIR SLASH "tinc");
        }
 }