[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/4.5/kdepimlibs/mailtransport
From:       Olivier Trichet <nive () nivalis ! org>
Date:       2010-09-08 18:24:39
Message-ID: 20100908182439.8CE32AC857 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1173140 by otrichet:

Fix an infinite loop retrieving the password of a mail transport when \
TransportManager::schedule() is used and the stored password is empty.

[...]
#9719 0x00007fffef31f979 in MailTransport::TransportManager::loadPasswords \
(this=0x1144550) at /home/kde/dev/src/kdepimlibs/mailtransport/transportmanager.cpp:629
 #9720 0x00007fffef31675a in MailTransport::Transport::password (this=0x11834c0) at \
/home/kde/dev/src/kdepimlibs/mailtransport/transport.cpp:82 #9721 0x00007fffef3386ef \
in MailTransport::SmtpJob::startSmtpJob (this=0x1187410) at \
/home/kde/dev/src/kdepimlibs/mailtransport/smtpjob.cpp:159 #9722 0x00007fffef337c1e \
in MailTransport::SmtpJob::doStart (this=0x1187410) at \
/home/kde/dev/src/kdepimlibs/mailtransport/smtpjob.cpp:114 #9723 0x00007fffef335344 \
in MailTransport::TransportJob::start (this=0x1187410) at \
/home/kde/dev/src/kdepimlibs/mailtransport/transportjob.cpp:129 #9724 \
0x00007fffef31f979 in MailTransport::TransportManager::loadPasswords (this=0x1144550) \
at /home/kde/dev/src/kdepimlibs/mailtransport/transportmanager.cpp:629 [...]

review: http://reviewboard.kde.org/r/2579/


 M  +1 -2      transport.cpp  
 M  +3 -2      transportmanager.cpp  


--- branches/KDE/4.5/kdepimlibs/mailtransport/transport.cpp #1173139:1173140
@@ -79,8 +79,7 @@
 {
   if ( !d->passwordLoaded && requiresAuthentication() && storePassword() &&
        d->password.isEmpty() ) {
-    TransportManager::self()->loadPasswords();
-    d->password = TransportManager::self()->transportById( id(), false \
)->password(); +    readPassword();
   }
   return d->password;
 }
--- branches/KDE/4.5/kdepimlibs/mailtransport/transportmanager.cpp #1173139:1173140
@@ -628,10 +628,11 @@
   }
 
   // flush the wallet queue
-  foreach ( TransportJob *job, d->walletQueue ) {
+  const QList<TransportJob*> copy = d->walletQueue;
+  d->walletQueue.clear();
+  foreach ( TransportJob *job, copy ) {
     job->start();
   }
-  d->walletQueue.clear();
 
   emit passwordsChanged();
 }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic