summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValerio Valerio <valerio.valerio@jollamobile.com>2013-04-29 09:06:09 +0300
committerValerio Valerio <valerio.valerio@jollamobile.com>2013-04-30 11:44:28 +0200
commit2c26e21e4dc809808141660cda268b4c5a7837b7 (patch)
treee579f16f0c5207eaa5d4a537174b742bcee3a7d4
parent3a4d4f35890c911bb5a91de36d52f9275a5b41fb (diff)
Modify smtp transmitMessages action to test connection.4.0.0
Modify smtp transmitMessages to connect to server even if there's no messages queued for transmission, this allows clients to test server credentials. Signed-off-by: Valerio Valerio <valerio.valerio@jollamobile.com> Change-Id: I665082d688432f1a99bf70f09ec6f4afaf65f9f0 Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
-rw-r--r--src/libraries/qmfmessageserver/qmailmessageservice.cpp3
-rw-r--r--src/plugins/messageservices/smtp/smtpservice.cpp20
2 files changed, 9 insertions, 14 deletions
diff --git a/src/libraries/qmfmessageserver/qmailmessageservice.cpp b/src/libraries/qmfmessageserver/qmailmessageservice.cpp
index 88c60339..ad164dde 100644
--- a/src/libraries/qmfmessageserver/qmailmessageservice.cpp
+++ b/src/libraries/qmfmessageserver/qmailmessageservice.cpp
@@ -1261,6 +1261,9 @@ QMailMessageSink::~QMailMessageSink()
Messages for which for which an unsuccessful attempt to transmit has been made should be progressively reported via messagesFailedTransmission().
+ If \a ids is an empty list, the sink should still proceed through all the steps necessary when transmitting messages,
+ as this action may be invoked to test the viability of the connection.
+
Return true if an operation is initiated.
*/
bool QMailMessageSink::transmitMessages(const QMailMessageIdList &ids)
diff --git a/src/plugins/messageservices/smtp/smtpservice.cpp b/src/plugins/messageservices/smtp/smtpservice.cpp
index 116476b4..5cace7f7 100644
--- a/src/plugins/messageservices/smtp/smtpservice.cpp
+++ b/src/plugins/messageservices/smtp/smtpservice.cpp
@@ -76,15 +76,12 @@ private:
bool SmtpService::Sink::transmitMessages(const QMailMessageIdList &ids)
{
- bool messageQueued = false;
QMailMessageIdList failedMessages;
if (!ids.isEmpty()) {
foreach (const QMailMessageId id, ids) {
QMailMessage message(id);
- if (_service->_client.addMail(message) == QMailServiceAction::Status::ErrNoError) {
- messageQueued = true;
- } else {
+ if (!(_service->_client.addMail(message) == QMailServiceAction::Status::ErrNoError)) {
failedMessages << id;
}
}
@@ -94,16 +91,11 @@ bool SmtpService::Sink::transmitMessages(const QMailMessageIdList &ids)
emit messagesFailedTransmission(failedMessages, QMailServiceAction::Status::ErrInvalidAddress);
}
- QMailAccount account(_service->accountId());
- if (messageQueued || (account.customField("qmf-smtp-capabilities-listed") != "true")) {
- // At least one message could be queued for sending
- // or the smtp server capabilities (e.g. forward without download capable) are not known
- _service->_client.newConnection();
- } else {
- // No messages to send, so sending completed successfully
- QTimer::singleShot(0, this, SLOT(sendCompleted()));
- }
- return true;
+ // Open new connection, even if there's no messages queued for transmission, client might
+ // want to test the connection or the smtp server capabilities
+ // (e.g. forward without download capable) are not known
+ _service->_client.newConnection();
+ return true;
}
void SmtpService::Sink::messageTransmitted(const QMailMessageId &id)