[PATCH] Make Nginx Parse URL to IPv6 [Please ignore the last mail]
Speed First
speedfirst at gmail.com
Wed Mar 2 13:57:12 MSK 2011
sorry, the diff file in the last file is bad, use this one.
This is a new implementation according to your comments.
Here is my comments to this patch
1. ngx_inet_sock_addr is removed. You are right, ngx_parse_url can do that
job. So no need to change ngx_inet.h
2. the old "gethostbyname" implementation will be used if "--with-ipv6" is
not set; when "--with-ipv6" is set, "getaddrinfo" will be used
3. now when "ngx_inet_parse_url" find u->host might be a hostname, it will
invoke new added function "ngx_inet_resolve_hostname".
4. seems there is a bug in old file's line 829. Only when uri is NULL, len =
last - port.
5. now "ngx_inet6_parse_url" will finally invoke new added
"ngx_inet6_resolve_host", just like what "ngx_inet_parse_url" does. I think
it should be done but the old code doesn't do that. Please confirm this is
valid.
6. I try to remove duplicated code as much as possible, so the
"ngx_inet_resolve_host" is almost rewritten. Now, it will first handle the
u->host as it's an IP; if not, it will try to resolve them.
7. In "ngx_inet_parse_url", it firstly assume it's AF_INET and allocate the
memory. I think it's not suitable in the new implementation, but I didn't
touch this part of code.
8. All the fix are tested as before (with and without "--with-ipv6"), all
test are passed.
9. I make this implementation based on 0.9.3. I compare the ngx_inet.c in
official 0.9.3 and 0.9.5, and find there is a difference:
- for (i = 0; i < u->naddrs; i++) {
+ for (i = 0; h->h_addr_list[i] != NULL; i++) {
Since my implementation use "getaddrinfo", h_addr_list[i] will be invalid
when "--with-ipv6" is set.
Thanks.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-devel/attachments/20110302/99e49e4e/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ngx_inet.c.diff
Type: text/x-patch
Size: 14200 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx-devel/attachments/20110302/99e49e4e/attachment.bin>
More information about the nginx-devel
mailing list