@@ -1196,12 +1196,13 @@ static int cli(int argc, char** argv)
11961196 return 0 ;
11971197 }
11981198
1199- snprintf ((char *)path, sizeof (path), " %s%szerotier_dump.txt" , (char *)path, ZT_PATH_SEPARATOR_S);
1199+ char dumpfile[PATH_MAX];
1200+ snprintf (dumpfile, sizeof (dumpfile), " %s%szerotier_dump.txt" , (char *)path, ZT_PATH_SEPARATOR_S);
12001201
1201- fprintf (stdout, " Writing dump to: %s\n " , path );
1202- int fd = open (( char *)path , O_CREAT | O_RDWR , 0664 );
1202+ fprintf (stdout, " Writing dump to: %s\n " , dumpfile );
1203+ int fd = open (dumpfile , O_CREAT | O_WRONLY | O_TRUNC , 0664 );
12031204 if (fd == -1 ) {
1204- fprintf (stderr, " Error creating file. \n " );
1205+ perror ( " Error creating file" );
12051206 return 1 ;
12061207 }
12071208 write (fd, dump.str ().c_str (), dump.str ().size ());
@@ -1278,9 +1279,9 @@ static int cli(int argc, char** argv)
12781279 return 0 ;
12791280 }
12801281
1281- BOOL err = WriteFile (file, dump.str ().c_str (), dump.str ().size (), NULL , NULL );
1282- if (err = FALSE ) {
1283- fprintf (stderr, " Error writing file" );
1282+ BOOL ok = WriteFile (file, dump.str ().c_str (), dump.str ().size (), NULL , NULL );
1283+ if (ok = = FALSE ) {
1284+ fprintf (stderr, " Error writing file\n " );
12841285 return 1 ;
12851286 }
12861287 CloseHandle (file);
@@ -1346,12 +1347,15 @@ static int cli(int argc, char** argv)
13461347 }
13471348 close (sock);
13481349 char cwd[16384 ];
1349- getcwd (cwd, sizeof (cwd));
1350- snprintf (cwd, sizeof (cwd), " %s%szerotier_dump.txt" , cwd, ZT_PATH_SEPARATOR_S);
1351- fprintf (stdout, " Writing dump to: %s\n " , cwd);
1352- int fd = open (cwd, O_CREAT | O_RDWR, 0664 );
1350+ if (getcwd (cwd, sizeof (cwd)) == nullptr ) {
1351+ strcpy (cwd, " ." );
1352+ }
1353+ char dumpfile[sizeof (cwd) + 32 ];
1354+ snprintf (dumpfile, sizeof (dumpfile), " %s%szerotier_dump.txt" , cwd, ZT_PATH_SEPARATOR_S);
1355+ fprintf (stdout, " Writing dump to: %s\n " , dumpfile);
1356+ int fd = open (dumpfile, O_CREAT | O_WRONLY | O_TRUNC, 0664 );
13531357 if (fd == -1 ) {
1354- fprintf (stderr, " Error creating file. \n " );
1358+ perror ( " Error creating file" );
13551359 return 1 ;
13561360 }
13571361 write (fd, dump.str ().c_str (), dump.str ().size ());
@@ -2330,14 +2334,18 @@ int main(int argc, char** argv)
23302334 }
23312335#endif // !ZT_ONE_NO_ROOT_CHECK
23322336 if (runAsDaemon) {
2337+ prometheus::simpleapi::saver.stop ();
2338+
23332339 long p = (long )fork ();
23342340 if (p < 0 ) {
23352341 fprintf (stderr, " %s: could not fork" ZT_EOL_S, argv[0 ]);
23362342 return 1 ;
23372343 }
23382344 else if (p > 0 )
2339- return 0 ; // forked
2345+ _Exit ( 0 ) ; // forked
23402346 // else p == 0, so we are daemonized
2347+
2348+ prometheus::simpleapi::saver.restart ();
23412349 }
23422350#endif // __UNIX_LIKE__
23432351
0 commit comments