@ -958,13 +958,15 @@ int main(int argc,char **argv)
# endif // __UNIX_LIKE__
# ifdef __WINDOWS__
WSADATA wsaData ;
WSAStartup ( MAKEWORD ( 2 , 2 ) , & wsaData ) ;
{
WSADATA wsaData ;
WSAStartup ( MAKEWORD ( 2 , 2 ) , & wsaData ) ;
}
# ifdef ZT_WIN_RUN_IN_CONSOLE
bool winRunFromCommandLine = true ;
# else
bool winRunFromCommandLine = fals e;
bool winRunFromCommandLine = tru e;
# endif
# endif // __WINDOWS__
@ -1153,37 +1155,29 @@ int main(int argc,char **argv)
unsigned int returnValue = 0 ;
try {
for ( ; ; ) {
zt1Service = OneService : : newInstance ( homeDir . c_str ( ) , port ) ;
switch ( zt1Service - > run ( ) ) {
case OneService : : ONE_STILL_RUNNING : // shouldn't happen, run() won't return until done
case OneService : : ONE_NORMAL_TERMINATION :
break ;
case OneService : : ONE_UNRECOVERABLE_ERROR :
fprintf ( stderr , " %s: fatal error: %s " ZT_EOL_S , argv [ 0 ] , zt1Service - > fatalErrorMessage ( ) . c_str ( ) ) ;
returnValue = 1 ;
break ;
case OneService : : ONE_IDENTITY_COLLISION : {
delete zt1Service ;
zt1Service = ( OneService * ) 0 ;
std : : string oldid ;
OSUtils : : readFile ( ( homeDir + ZT_PATH_SEPARATOR_S + " identity.secret " ) . c_str ( ) , oldid ) ;
if ( oldid . length ( ) ) {
OSUtils : : writeFile ( ( homeDir + ZT_PATH_SEPARATOR_S + " identity.secret.saved_after_collision " ) . c_str ( ) , oldid ) ;
OSUtils : : rm ( ( homeDir + ZT_PATH_SEPARATOR_S + " identity.secret " ) . c_str ( ) ) ;
OSUtils : : rm ( ( homeDir + ZT_PATH_SEPARATOR_S + " identity.public " ) . c_str ( ) ) ;
}
} continue ; // restart!
}
break ; // terminate loop -- normally we don't keep restarting
for ( ; ; ) {
zt1Service = OneService : : newInstance ( homeDir . c_str ( ) , port ) ;
switch ( zt1Service - > run ( ) ) {
case OneService : : ONE_STILL_RUNNING : // shouldn't happen, run() won't return until done
case OneService : : ONE_NORMAL_TERMINATION :
break ;
case OneService : : ONE_UNRECOVERABLE_ERROR :
fprintf ( stderr , " %s: fatal error: %s " ZT_EOL_S , argv [ 0 ] , zt1Service - > fatalErrorMessage ( ) . c_str ( ) ) ;
returnValue = 1 ;
break ;
case OneService : : ONE_IDENTITY_COLLISION : {
delete zt1Service ;
zt1Service = ( OneService * ) 0 ;
std : : string oldid ;
OSUtils : : readFile ( ( homeDir + ZT_PATH_SEPARATOR_S + " identity.secret " ) . c_str ( ) , oldid ) ;
if ( oldid . length ( ) ) {
OSUtils : : writeFile ( ( homeDir + ZT_PATH_SEPARATOR_S + " identity.secret.saved_after_collision " ) . c_str ( ) , oldid ) ;
OSUtils : : rm ( ( homeDir + ZT_PATH_SEPARATOR_S + " identity.secret " ) . c_str ( ) ) ;
OSUtils : : rm ( ( homeDir + ZT_PATH_SEPARATOR_S + " identity.public " ) . c_str ( ) ) ;
}
} continue ; // restart!
}
} catch ( std : : exception & exc ) {
fprintf ( stderr , " %s: fatal error: %s " ZT_EOL_S , argv [ 0 ] , exc . what ( ) ) ;
returnValue = 1 ;
} catch ( . . . ) {
fprintf ( stderr , " %s: fatal error: unknown exception " ZT_EOL_S , argv [ 0 ] ) ;
returnValue = 1 ;
break ; // terminate loop -- normally we don't keep restarting
}
delete zt1Service ;