}
void work() {
- std::vector<char> buffer( 2048 );
- int res = io->read( buffer.data(), buffer.size() );
-
- if( res <= 0 ) {
- logger::error( "Stream error, resetting SSL" );
- parent->reset();
- return;
- }
-
- std::string content( buffer.data(), res );
+ std::string content = io->readLine();
try {
RecordHeader head;
respondCommand( RecordHeader::SignerResult::CERTIFICATE, result->certificate );
}
+ 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" );
parent->reset(); // Connection ended
auto ca = CAs.at( data );
CRL c( ca->path + "/ca.crl" );
respondCommand( RecordHeader::SignerResult::FULL_CRL, c.toString() );
-
+
+ logger::note( "Shutting down SSL" );
if( !SSL_shutdown( ssl.get() ) && !SSL_shutdown( ssl.get() ) ) {
logger::error( "ERROR: SSL shutdown failed." );
}
+ io->ctrl( BIO_CTRL_FLUSH, 0, NULL );
+ logger::note( "Shutted down SSL" );
parent->reset(); // Connection ended
}
void DefaultRecordHandler::handle() {
if( !currentSession ) {
+ (void) BIO_reset( bio.get() );
logger::note( "New session allocated." );
currentSession = std::make_shared<RecordHandlerSession>( this, signer, ctx, bio );
}
-
- currentSession->work();
+ try {
+ currentSession->work();
+ } catch( EOFException e ){
+ reset();
+ }
}