[evolution-patches] Re: possible fix for the soup connection_death loop



On Wed, 2003-05-07 at 19:13, Dan Winship wrote:
> I was trying to fix 42468, which turned out to be our old friend the
> connection_death loop. There are actually 3 fixes in this patch:
> 
>      1. Only set a death watch on the connection when in_use is FALSE,
>         so that we can always destroy it when connection_death is
>         called, rather than returning FALSE and getting into an infinite
>         loop.
>      2. Fix a double free situation in soup-transfer made more common by
>         that fix
>      3. Fix the new infinite loop that 42468 turns into with that fix
>         because the connection was never getting marked as not-new.
> 
> With those 3 fixes... 42468 *still* gets into an infinite loop, now
> because of bugs in the NTLM logic. (It keeps forgetting that it's in the
> middle of authenticating and starts over.) I'm still working on that
> part, and I'm not going to commit this until I've figured that out too,
> but those fixes should be orthogonal to these ones.

Hmm, it doesn't fix one of the infinite loop cases and causes a crash in
another.  The crash though is in the HTTP-proxy-tunnelling case with a
double free because it's calling connection_free() twice.  That's
probably just a bug in that code though.  Does that sort of setup ever
happen in the evo side?  A good way to reproduce it is to run netcat in
listening mode, set the destination URL to HTTPS and the proxy URL HTTP
pointing to the listening netcat.  When the connection is established,
do a control-D in the netcat and it'll barf.

The other case seems to be a reentrancy issue with
socket/context/queue/proxy callbacks calling soup_message_send() and
doing some infinitely stack frame recursion.  I think that's unrelated
to your patch, though.

I can poke at the HTTP-proxy-tunnelling stuff after lunch... I think if
we can fix that it's good to go in.

Joe




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]