Catch and prettyprint exceptions even in setup phase

This commit is contained in:
Keith Winstein
2012-02-09 01:45:03 -05:00
parent d8533ca3a6
commit 354dff39c8
3 changed files with 34 additions and 6 deletions
+20 -5
View File
@@ -60,13 +60,28 @@ int main( int argc, char *argv[] )
exit( 1 );
}
STMClient client( ip, port, key );
try {
STMClient client( ip, port, key );
client.init();
client.init();
try {
client.main();
} catch ( Network::NetworkException e ) {
fprintf( stderr, "Network exception: %s: %s\r\n",
e.function.c_str(), strerror( e.the_errno ) );
} catch ( Crypto::CryptoException e ) {
fprintf( stderr, "Crypto exception: %s\r\n",
e.text.c_str() );
}
client.main();
client.shutdown();
client.shutdown();
} catch ( Network::NetworkException e ) {
fprintf( stderr, "Network exception: %s: %s\r\n",
e.function.c_str(), strerror( e.the_errno ) );
} catch ( Crypto::CryptoException e ) {
fprintf( stderr, "Crypto exception: %s\r\n",
e.text.c_str() );
}
printf( "\n[mosh is exiting.]\n" );
+10 -1
View File
@@ -127,7 +127,16 @@ int main( int argc, char *argv[] )
exit( 0 );
} else {
/* parent */
serve( master, desired_ip );
try {
serve( master, desired_ip );
} catch ( Network::NetworkException e ) {
fprintf( stderr, "Network exception: %s: %s\n",
e.function.c_str(), strerror( e.the_errno ) );
} catch ( Crypto::CryptoException e ) {
fprintf( stderr, "Crypto exception: %s\n",
e.text.c_str() );
}
if ( close( master ) < 0 ) {
perror( "close" );
exit( 1 );
+4
View File
@@ -153,6 +153,10 @@ void STMClient::main_init( void )
void STMClient::output_new_frame( void )
{
if ( !network ) { /* clean shutdown even when not initialized */
return;
}
/* fetch target state */
Terminal::Framebuffer new_state( network->get_latest_remote_state().state.get_fb() );