[asterisk-dev] [Code Review] Make http.c IPv6-ready

Simon Perreault simon.perreault at viagenie.ca
Fri Oct 29 13:44:14 CDT 2010


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/986/#review2858
-----------------------------------------------------------


Excellent work, especially the iterating over addresses.

In a perfect world, you wouldn't stop iterating when you're successfully bound. You would continue iterating and create more sockets. For example, if I want to bind to www.example.com, and that hostname has A and AAAA records, I would expect Asterisk to bind to all the addresses it gets. But that's a separate issue which involves architectural changes.


/trunk/main/http.c
<https://reviewboard.asterisk.org/r/986/#comment6033>

    Can we stop including asterisk/network.h? It doesn't seem needed anymore, at least on Linux...



/trunk/main/http.c
<https://reviewboard.asterisk.org/r/986/#comment6035>

    Shouldn't this be initialized to DEFAULT_PORT?



/trunk/main/http.c
<https://reviewboard.asterisk.org/r/986/#comment6040>

    %d is for printing int. To print a fixed-size integer, you need to use what's in /usr/include/inttypes.h. In this case, we need PRId32.
    
    ...Using default port %"PRI32d, v->value, DEFAULT_PORT);



/trunk/main/http.c
<https://reviewboard.asterisk.org/r/986/#comment6036>

    Red.



/trunk/main/http.c
<https://reviewboard.asterisk.org/r/986/#comment6039>

    ARRAY_LEN() can only be used with statically-sized arrays.
    
    Use the return value of ast_sockaddr_resolve() instead.



/trunk/main/http.c
<https://reviewboard.asterisk.org/r/986/#comment6037>

    Simpler: initialize bindport to DEFAULT_PORT. Then:
    
    if (!ast_sockaddr_port(...)) {
        ast_sockaddr_set_port(...., bindport);
    }



/trunk/main/http.c
<https://reviewboard.asterisk.org/r/986/#comment6038>

    Should success be logged?


- Simon


On 2010-10-29 12:48:30, Mark Michelson wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/986/
> -----------------------------------------------------------
> 
> (Updated 2010-10-29 12:48:30)
> 
> 
> Review request for Asterisk Developers.
> 
> 
> Summary
> -------
> 
> This patch allows for IPv6 addresses to be used when configuring the HTTP server in Asterisk.
> 
> There is a behavior change here as well. Since ast_sockaddr_resolve() returns an array of addresses, we'll iterate over the addresses returned until we're able to properly start the server. Adding logic to fail back to a cached address was not added, as the scope of that is quite different.
> 
> I rewrote a good portion of the configuration-loading function, so when reviewing, be sure that I haven't introduced any subtle behavior changes. As a side note, it would be awesome if we could just get rid of any "bindport" options, but I know that would be hard to wrangle :)
> 
> As a side note, I noticed an odd inconsistency regarding setting the TLS and non-TLS bind addresses. The non-TLS bind address can be a hostname, but the TLS one cannot be, because it uses the built-in option parsing in tcptls.c. I did not address this because I did not want the scope of my changes to be too broad.
> 
> 
> Diffs
> -----
> 
>   /trunk/main/http.c 292864 
> 
> Diff: https://reviewboard.asterisk.org/r/986/diff
> 
> 
> Testing
> -------
> 
> None. I'm not in a position at the moment to be able to test very thoroughly.
> 
> 
> Thanks,
> 
> Mark
> 
>




More information about the asterisk-dev mailing list