From 4cab719ff29893ac868af8a6fa910e009b42322a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 25 Mar 2013 00:00:18 +0100 Subject: [PATCH] mail_daemon: auto check message was leaked, send immediately. * BMessageRunner does not take ownership of the message. * Instead of waiting through the complete interval, we send an auto check message immediately after launch (or whenever else the timer is being started). * Added constant instead of referring to 'moto' for the auto check message. --- src/servers/mail/MailDaemonApplication.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/servers/mail/MailDaemonApplication.cpp b/src/servers/mail/MailDaemonApplication.cpp index 303259f8ec..561a2b39be 100644 --- a/src/servers/mail/MailDaemonApplication.cpp +++ b/src/servers/mail/MailDaemonApplication.cpp @@ -40,6 +40,9 @@ #define B_TRANSLATION_CONTEXT "MailDaemon" +static const uint32 kMsgAutoCheck = 'moto'; + + struct send_mails_info { send_mails_info() { @@ -302,10 +305,8 @@ void MailDaemonApplication::MessageReceived(BMessage* msg) { switch (msg->what) { - case 'moto': - if (fSettingsFile.CheckOnlyIfPPPUp()) { - // TODO: check whether internet is up and running! - } + case kMsgAutoCheck: + // TODO: check whether internet is up and running! // supposed to fall through case kMsgCheckAndSend: // check & send messages msg->what = kMsgSendMessages; @@ -832,8 +833,13 @@ MailDaemonApplication::_UpdateAutoCheck(bigtime_t interval) fAutoCheckRunner->SetInterval(interval); fAutoCheckRunner->SetCount(-1); } else { - fAutoCheckRunner = new BMessageRunner(be_app_messenger, - new BMessage('moto'), interval); + BMessage update(kMsgAutoCheck); + fAutoCheckRunner = new BMessageRunner(be_app_messenger, &update, + interval); + + // Send one right away -- the message runner will wait until the + // first interval has passed before sending a message + PostMessage(&update); } } else { delete fAutoCheckRunner;