| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] |
On Tue, Jul 20, 2004 at 04:00:21PM +0200, Ingo Molnar scribbled:
>
> * Marek Habersack <grendel@caudium.net> wrote:
>
> > if (rval == REQ_STATIC) {
> > req->event = 1;
> > do_syslog("Static request, getting the object (%s)", req->objectname);
> > rval = tux(TUX_ACTION_GET_OBJECT, req);
> > if (rval < 0 || req->error) {
> > req->event = 2;
> > if (content_type(req) == CONTENT_NOTIFY)
> > return send_failure(req, LOG_ERR_OBJECT_NOT_FOUND);
> >
> > goto abort;
> > }
> > return rval;
> > }
>
> This code doesnt handle events properly. When tux() returns there might
> be another request active (with a different ->priv value) - you need to
> return so that your event loop can be re-called with the proper request
> pointer.
OK, I see the problem now. Above, I'm calling tux(TUX_ACTION_GET_OBJECT,
req) and if it fails I immediately call either tux(TUX_ACTION_SEND_BUFFER,
req) or tux(TUX_ACTION_FINISH_CLOSE_REQ, req) (in the 'abort; label) -
instead I should return immediately after the TUX_ACTION_GET_OBJECT call
fails and send the buffer or close the connection only the next time
handle_events is called. Did I get it right?
thanks,
marek
Attachment:
signature.asc
Description: Digital signature
[Older Fedora Users Mail] [Home] [Fedora Legacy] [Fedora Desktop] [iPod Nano] [ATA RAID] [Fedora Bible] [Fedora Marketing] [Fedora Mentors] [Fedora Packaging] [Fedora SELinux] [Big List of Linux Books] [Yosemite News] [Yosemite Photos] [KDE Users] [Fedora Tools] [Fedora Docs]