From 6f505222380faff9968314200bddc5fdb9dbb564 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Fri, 5 Sep 2025 22:19:21 +0200 Subject: [PATCH] Avoid repetetive calling of SMTPParser::getCode --- src/vmime/net/smtp/SMTPTransport.cpp | 38 +++++++++++++++------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/src/vmime/net/smtp/SMTPTransport.cpp b/src/vmime/net/smtp/SMTPTransport.cpp index 882b8d37..e557137a 100644 --- a/src/vmime/net/smtp/SMTPTransport.cpp +++ b/src/vmime/net/smtp/SMTPTransport.cpp @@ -298,24 +298,25 @@ void SMTPTransport::sendEnvelope( commands->writeToSocket(m_connection->getSocket(), m_connection->getTracer()); if ((resp = m_connection->readResponse())->getCode() != 250) { + auto code = resp->getCode(); // SIZE extension: insufficient system storage - if (resp->getCode() == 452) { + if (code == 452) { throw SMTPMessageSizeExceedsCurLimitsException( SMTPCommandError( commands->getLastCommandSent()->getText(), resp->getText(), - resp->getCode(), resp->getEnhancedCode() + code, resp->getEnhancedCode() ) ); // SIZE extension: message size exceeds fixed maximum message size - } else if (resp->getCode() == 552) { + } else if (code == 552) { throw SMTPMessageSizeExceedsMaxLimitsException( SMTPCommandError( commands->getLastCommandSent()->getText(), resp->getText(), - resp->getCode(), resp->getEnhancedCode() + code, resp->getEnhancedCode() ) ); @@ -324,7 +325,7 @@ void SMTPTransport::sendEnvelope( throw SMTPCommandError( commands->getLastCommandSent()->getText(), resp->getText(), - resp->getCode(), resp->getEnhancedCode() + code, resp->getEnhancedCode() ); } } @@ -335,27 +336,27 @@ void SMTPTransport::sendEnvelope( commands->writeToSocket(m_connection->getSocket(), m_connection->getTracer()); resp = m_connection->readResponse(); + auto code = resp->getCode(); - if (resp->getCode() != 250 && - resp->getCode() != 251) { + if (code != 250 && code != 251) { // SIZE extension: insufficient system storage - if (resp->getCode() == 452) { + if (code == 452) { throw SMTPMessageSizeExceedsCurLimitsException( SMTPCommandError( commands->getLastCommandSent()->getText(), resp->getText(), - resp->getCode(), resp->getEnhancedCode() + code, resp->getEnhancedCode() ) ); // SIZE extension: message size exceeds fixed maximum message size - } else if (resp->getCode() == 552) { + } else if (code == 552) { throw SMTPMessageSizeExceedsMaxLimitsException( SMTPCommandError( commands->getLastCommandSent()->getText(), resp->getText(), - resp->getCode(), resp->getEnhancedCode() + code, resp->getEnhancedCode() ) ); @@ -364,7 +365,7 @@ void SMTPTransport::sendEnvelope( throw SMTPCommandError( commands->getLastCommandSent()->getText(), resp->getText(), - resp->getCode(), resp->getEnhancedCode() + code, resp->getEnhancedCode() ); } } @@ -374,12 +375,14 @@ void SMTPTransport::sendEnvelope( if (sendDATACommand) { commands->writeToSocket(m_connection->getSocket(), m_connection->getTracer()); + auto resp = m_connection->readResponse(); + auto code = resp->getCode(); - if ((resp = m_connection->readResponse())->getCode() != 354) { + if (code != 354) { throw SMTPCommandError( commands->getLastCommandSent()->getText(), resp->getText(), - resp->getCode(), resp->getEnhancedCode() + code, resp->getEnhancedCode() ); } } @@ -420,10 +423,11 @@ void SMTPTransport::send( m_connection->getTracer()->traceSend("."); } - shared_ptr resp; + shared_ptr resp = m_connection->readResponse(); + auto code = resp->getCode(); - if ((resp = m_connection->readResponse())->getCode() != 250) { - throw SMTPCommandError("DATA", resp->getText(), resp->getCode(), resp->getEnhancedCode()); + if (code != 250) { + throw SMTPCommandError("DATA", resp->getText(), code, resp->getEnhancedCode()); } }