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

Re: [Libevent-users] evhttp client error handling



Hi Patrick, thanks, now understand that I don't see at the right peace of code.

Could you try to test my patch
https://github.com/azat/libevent/commit/71e709c7829275a594f767b27468b1b52e8b5bb9.patch

and write if it works for you?

Thanks.

On Tue, Jan 22, 2013 at 9:05 AM, Patrick Pelletier
<ppelletier@xxxxxxxxxx> wrote:
> Azat Khuzhin wrote:
>>
>> Also on which operating system did you work?
>
>
> Ubuntu 10.04 LTS:
>
> Linux chives 2.6.32-34-generic #77-Ubuntu SMP Tue Sep 13 19:39:17 UTC 2011
> x86_64 GNU/Linux
>
> But the operating system doesn't really matter.  This is a general problem
> with evhttp, regardless of OS.
>
>
>> Maybe this will be useful for you
>>
>> http://instantbadger.blogspot.ru/2010/06/eafnosupport-socket-connection-issue-on.html
>
>
> Sure, obviously you can sweep the problem under the carpet by only using
> IPv4.  That's what I'm doing now: I have a horrible little hack that
> compares the hostname with "localhost" and replaces it with "127.0.0.1" in
> that case.
>
> But that does nothing to address the underlying problem that evhttp doesn't
> support IPv6.  Although IPv6 is still in the minority, and adoption is slow,
> it's still something we ought to support.  If evhttp is IPv4-only, it is not
> future-proof.
>
>> On Sun, Jan 20, 2013 at 7:18 PM, Azat Khuzhin <dohardgopro@xxxxxxxxx>
>> wrote:
>>>
>>> But "ai" can't be NULL in "bind_socket_ai()", see
>>>
>>> https://github.com/libevent/libevent/blob/0c2bacca43ffe452d4f5cdc4b57fd29a7795777d/http.c#L4088
>
>
> Sure it can.  It's explicitly called with NULL right here:
>
> https://github.com/libevent/libevent/blob/b452a4345088dcc7e7491bcff612f9f11dfb17da/http.c#L4084
>
> address and port are going to be NULL, because they come from
> evcon->bind_address and evcon->bind_port:
>
> https://github.com/libevent/libevent/blob/b452a4345088dcc7e7491bcff612f9f11dfb17da/http.c#L2336
>
> and evcon->bind_address and evcon->bind_port default to NULL, and are going
> to stay NULL, unless evhttp_connection_set_local_address() or
> evhttp_connection_set_local_port() are called.  But these wouldn't normally
> be called in the client case.  The example that I'm basing my code off of
> doesn't call them:
>
> http://archives.seul.org/libevent/users/Mar-2012/binGP2R6ys0C_.bin
>
> and it doesn't make sense for the client to call them anyway.  In the client
> case, you want to use whichever local address will allow you to reach the
> remote address.  So we are once again back to our chicken-and-egg problem,
> that you have to resolve the remote address (and know whether it is IPv4 or
> IPv6) before you can create the socket.  It doesn't make sense any other
> way.
>
>
> --Patrick
> ***********************************************************************
> To unsubscribe, send an e-mail to majordomo@xxxxxxxxxxxxx with
> unsubscribe libevent-users    in the body.



-- 
Azat Khuzhin
***********************************************************************
To unsubscribe, send an e-mail to majordomo@xxxxxxxxxxxxx with
unsubscribe libevent-users    in the body.