X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Fio%2FrecordHandler.cpp;h=2eb8358a567c55f19c117c231f6fc8ca8c1c28c3;hb=dc63575cbbef92d3ee7f0f6c22dae7e42f579651;hp=551b2c495144e04c4660bc95c45dacaef885bbb3;hpb=f8d1606423c351f2003ce18258ef047e0d2af326;p=cassiopeia.git diff --git a/src/io/recordHandler.cpp b/src/io/recordHandler.cpp index 551b2c4..2eb8358 100644 --- a/src/io/recordHandler.cpp +++ b/src/io/recordHandler.cpp @@ -45,7 +45,7 @@ public: RecordHandlerSession( DefaultRecordHandler* parent, std::shared_ptr signer, std::shared_ptr ctx, std::shared_ptr output ) : tbs( std::make_shared() ), - logFile(openLogfile( "logs/log_" + timestamp() ) ), + logFile( openLogfile( "logs/log_" + timestamp() ) ), logger{ std::cout, *logFile } { this->parent = parent; this->signer = signer; @@ -75,8 +75,8 @@ public: RecordHeader head; std::string all = parseCommandChunked( head, io ); execute( static_cast( head.command ), all ); - } catch( const char* msg ) { - logger::error( "ERROR: ", msg ); + } catch( const std::exception& msg ) { + logger::error( "ERROR: ", msg.what() ); parent->reset(); return; } @@ -160,9 +160,11 @@ public: } logger::note( "Shutting down SSL" ); + if( !SSL_shutdown( ssl.get() ) && !SSL_shutdown( ssl.get() ) ) { logger::warn( "ERROR: SSL shutdown failed." ); } + io->ctrl( BIO_CTRL_FLUSH, 0, NULL ); logger::note( "Shutted down SSL" ); @@ -207,7 +209,7 @@ public: break; default: - throw "Unimplemented"; + throw std::runtime_error( "Unimplemented" ); } } }; @@ -222,13 +224,14 @@ void DefaultRecordHandler::reset() { void DefaultRecordHandler::handle() { if( !currentSession ) { - (void) BIO_reset( bio.get() ); + ( void ) BIO_reset( bio.get() ); logger::note( "New session allocated." ); currentSession = std::make_shared( this, signer, ctx, bio ); } + try { currentSession->work(); - } catch( EOFException e ){ + } catch( eof_exception e ) { reset(); } }