AW: Solution for possible crash if using SSL

I did some further tests and added a new flag "BOOL in_flush" to the HTHost
structure.
It is initialized in HTHost_new:

        pres->ntime = time(NULL);
        pres->mode = HT_TP_SINGLE;
        pres->delay = WriteDelay;
        pres->in_flush=NO;
        {
            int i;  

Now HTHost_forceFlush looks like this:

PUBLIC int HTHost_forceFlush(HTHost * host)
{
    HTNet * targetNet = (HTNet *) HTList_lastObject(host->pipeline);
    int ret;
    if (host->in_flush || targetNet == NULL) return HT_ERROR;
    HTTRACE(CORE_TRACE, "Host Event.. FLUSH passed to `%s\'\n" _
 
HTAnchor_physical(HTRequest_anchor(HTNet_request(targetNet))));
    host->forceWriteFlush = host->in_flush = YES;
    while ((ret=(*targetNet->event.cbf)(HTChannel_socket(host->channel),
targetNet->event.param,
HTEvent_FLUSH))==HT_WOULD_BLOCK);
    host->forceWriteFlush = host->in_flush = NO;
    return ret;
}

So the flushes to different hosts are independant. It works for me. Comments
?

Regards, Heiner

> -----Ursprüngliche Nachricht-----
> Von: Kallweit, Heiner 
> Gesendet am: Mittwoch, 26. Juli 2000 17:46
> An: 'jose.kahan@w3.org'
> Cc: 'www-lib@w3.org'
> Betreff: RE: Solution for possible crash if using SSL
> 
> 1. You're right, it blocks every flush. It was a quick fix for me
>    and in my app there is always only one host. So it may not be a
>    solution for everybody.
> 2. To use the forceWriteFlush-flag is IMHO no good idea, because
>    this flag is set also at other places in HTHost.c and we had
>    no chance to reset the flag. So we have to add a new flag to
>    the HTHost structure ?
> 
> Regards, Heiner
> 
> > -----Ursprüngliche Nachricht-----
> > Von: jose.kahan@w3.org [mailto:jose.kahan@w3.org]
> > Gesendet am: Mittwoch, 26. Juli 2000 17:21
> > An: Kallweit, Heiner
> > Cc: 'www-lib@w3.org'
> > Betreff: Re: Solution for possible crash if using SSL
> > 
> > Hello Heiner,
> > 
> > I saw your patch. One thing that worries me is that your 
> patch blocks
> > all flushes that may be done in any host. Did you try to use the
> > host->forceWriteFlush variable instead, to do the same thing?
> > 
> > That is
> > 
> > if (host->force_writeFlush || targetNet == NULL)
> > 
> > instead of
> > 
> > if (in_flush || targetNet == NULL)
> > 
> > It looks like a better solution to me. Could you give it a 
> > try and then
> > report back to the list?
> > 
> > Thanks!
> > 
> > -Jose
> 

Received on Thursday, 27 July 2000 10:37:24 UTC