mirror of
				https://github.com/openresty/openresty.git
				synced 2024-10-13 00:29:41 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| --- nginx-1.4.3/src/event/ngx_event_accept.c	2013-05-06 03:26:50.000000000 -0700
 | |
| +++ nginx-1.4.3-patched/src/event/ngx_event_accept.c	2013-07-10 13:05:02.001249099 -0700
 | |
| @@ -269,17 +269,28 @@ ngx_event_accept(ngx_event_t *ev)
 | |
|  #endif
 | |
|  
 | |
|          if (ls->addr_ntop) {
 | |
| -            c->addr_text.data = ngx_pnalloc(c->pool, ls->addr_text_max_len);
 | |
| -            if (c->addr_text.data == NULL) {
 | |
| -                ngx_close_accepted_connection(c);
 | |
| -                return;
 | |
| -            }
 | |
| +            if (socklen > sizeof(c->sockaddr->sa_family)) {
 | |
| +                c->addr_text.data = ngx_pnalloc(c->pool, ls->addr_text_max_len);
 | |
| +                if (c->addr_text.data == NULL) {
 | |
| +                    ngx_close_accepted_connection(c);
 | |
| +                    return;
 | |
| +                }
 | |
| +
 | |
| +                c->addr_text.len = ngx_sock_ntop(c->sockaddr, c->addr_text.data,
 | |
| +                                                 ls->addr_text_max_len, 0);
 | |
| +                if (c->addr_text.len == 0) {
 | |
| +                    ngx_close_accepted_connection(c);
 | |
| +                    return;
 | |
| +                }
 | |
| +
 | |
| +            } else {
 | |
| +                /*
 | |
| +                 * Linux accept/accept4 syscalls, for example, do not return
 | |
| +                 * address data upon unix domain sockets
 | |
| +                 */
 | |
|  
 | |
| -            c->addr_text.len = ngx_sock_ntop(c->sockaddr, c->addr_text.data,
 | |
| -                                             ls->addr_text_max_len, 0);
 | |
| -            if (c->addr_text.len == 0) {
 | |
| -                ngx_close_accepted_connection(c);
 | |
| -                return;
 | |
| +                c->addr_text.data = NULL;
 | |
| +                c->addr_text.len = 0;
 | |
|              }
 | |
|          }
 | |
|  
 |