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

List:       kde-core-devel
Subject:    Re: Question: KIO Scheduler
From:       David Faure <david () mandrakesoft ! com>
Date:       2000-11-04 12:49:59
[Download RAW message or body]

On Monday 30 October 2000 05:44, Waldo Bastian wrote:
> On Sunday 29 October 2000 19:08, Dawit Alemayehu wrote:
> 
> > > Hello,
> >
> > I am trying to add support for automatic deletion of passwords when the
> > applications that cached them are closed by the user.  To achieve this I
> > put the code that tracks and deletes cached passwords in KIO's scheduler
> > since there is one instance of it per app (unlike the slaves and the jobs).
> >  Hence, when the app exists we are able to correctly deal with the cached
> > passwords (remove them as necessary).  However, I cannot get this to work
> > no matter what I tried and need help.  From what I gathered so far it seems
> > to me that my problem stems from the fact that the scheduler is a static
> > object.  I have attached a patch below to show what I have done.  Below is
> > a brief description of how this deletion is supposed(intended) to work:
> >
> > 1.) Whenever a unique new password is cached the SlaveBase responsible for
> > this stuff sends a message to the application-side of the house
> > (SlaveInterface).  The message is the key under which the password is
> > cached in the kdesud daemon.
> >
> > 2.) When the SlaveInterface gets this message it emits a signal with this
> > key at hand.  And since the scheduler is connected to this signal when it
> > first created the io-slave, it gets its hand on it.
> >
> > 3) The SLOT connected to the signal in KIO::Scheduler then store the key in
> > a list (QValueList) and registers itself with the kdesu daemon as an owner
> > of this key.
> >
> > So far so good.  I was able to get this to work for a while consistently,
> > but now for whatever reason it seems not to anymore.  I do not get the
> > debug statements I should when I test it.  But do not worry about this as
> > it seems to be something wrong on my end
> >
> > 4.) When the application is then destroyed, I put a statement that calls
> > delCachedAuthKeys in KIO::Scheduler's dtor.  The above method determines
> > whether or not the cached entries should be deleted or not.  This is the
> > point  of failure.  I always get the following FATAL error and konqueror
> > aborts in the process of shutting down.
> >
> > Fatal error: you need to have a KInstance object before
> > you do anything that requires it! Examples of this are config
> > objects, standard directories or translations.
> > zsh: 9755 abort      konqueror
> >
> > If I then remove the method that attempts to call the afformentioned method
> > from the destructor, I do not get the above message.
> >
> > Thus, the question is where is the correct place to put this stuff such
> > that when this static object is destroyed or about to be destroyed the
> > cached entries, if any, can be cleaned as well...
> 
> The scheduler gets deleted after the KApplication gets deleted, there isn't a 
> whole lot of stuff you are allowed to do at that point.
> 
> It's like a house that falls apart and you are running for the door....

Yup. Does the new method for cleaning up when kapplication exits
(the one with "Simon" in the debug message :-)
help for that ? Maybe the house is a bit less falling apart at that point ?

-- 
David FAURE, david@mandrakesoft.com, faure@kde.org
http://www.mandrakesoft.com/~david/, http://www.konqueror.org/
KDE, Making The Future of Computing Available Today
See http://www.kde.org/kde1-and-kde2.html for how to set up KDE 2

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

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