comparison src/event/ngx_event_openssl_stapling.c @ 5475:07dd5bd222ac

Changed resolver API to use ngx_addr_t.
author Ruslan Ermilov <ru@nginx.com>
date Fri, 06 Dec 2013 14:30:27 +0400
parents 314c3d7cc3a5
children 98876ce2a7fd
comparison
equal deleted inserted replaced
5474:b43b02bb54db 5475:07dd5bd222ac
814 static void 814 static void
815 ngx_ssl_ocsp_resolve_handler(ngx_resolver_ctx_t *resolve) 815 ngx_ssl_ocsp_resolve_handler(ngx_resolver_ctx_t *resolve)
816 { 816 {
817 ngx_ssl_ocsp_ctx_t *ctx = resolve->data; 817 ngx_ssl_ocsp_ctx_t *ctx = resolve->data;
818 818
819 u_char *p; 819 u_char *p;
820 size_t len; 820 size_t len;
821 in_port_t port; 821 in_port_t port;
822 ngx_uint_t i; 822 socklen_t socklen;
823 struct sockaddr_in *sin; 823 ngx_uint_t i;
824 struct sockaddr *sockaddr;
824 825
825 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, ctx->log, 0, 826 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, ctx->log, 0,
826 "ssl ocsp resolve handler"); 827 "ssl ocsp resolve handler");
827 828
828 if (resolve->state) { 829 if (resolve->state) {
833 goto failed; 834 goto failed;
834 } 835 }
835 836
836 #if (NGX_DEBUG) 837 #if (NGX_DEBUG)
837 { 838 {
838 in_addr_t addr; 839 u_char text[NGX_SOCKADDR_STRLEN];
840 ngx_str_t addr;
841
842 addr.data = text;
839 843
840 for (i = 0; i < resolve->naddrs; i++) { 844 for (i = 0; i < resolve->naddrs; i++) {
841 addr = ntohl(resolve->addrs[i]); 845 addr.len = ngx_sock_ntop(resolve->addrs[i].sockaddr,
842 846 resolve->addrs[i].socklen,
843 ngx_log_debug4(NGX_LOG_DEBUG_EVENT, ctx->log, 0, 847 text, NGX_SOCKADDR_STRLEN, 0);
844 "name was resolved to %ud.%ud.%ud.%ud", 848
845 (addr >> 24) & 0xff, (addr >> 16) & 0xff, 849 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, ctx->log, 0,
846 (addr >> 8) & 0xff, addr & 0xff); 850 "name was resolved to %V", &addr);
851
847 } 852 }
848 } 853 }
849 #endif 854 #endif
850 855
851 ctx->naddrs = resolve->naddrs; 856 ctx->naddrs = resolve->naddrs;
857 862
858 port = htons(ctx->port); 863 port = htons(ctx->port);
859 864
860 for (i = 0; i < resolve->naddrs; i++) { 865 for (i = 0; i < resolve->naddrs; i++) {
861 866
862 sin = ngx_pcalloc(ctx->pool, sizeof(struct sockaddr_in)); 867 socklen = resolve->addrs[i].socklen;
863 if (sin == NULL) { 868
869 sockaddr = ngx_palloc(ctx->pool, socklen);
870 if (sockaddr == NULL) {
864 goto failed; 871 goto failed;
865 } 872 }
866 873
867 sin->sin_family = AF_INET; 874 ngx_memcpy(sockaddr, resolve->addrs[i].sockaddr, socklen);
868 sin->sin_port = port; 875
869 sin->sin_addr.s_addr = resolve->addrs[i]; 876 switch (sockaddr->sa_family) {
870 877 #if (NGX_HAVE_INET6)
871 ctx->addrs[i].sockaddr = (struct sockaddr *) sin; 878 case AF_INET6:
872 ctx->addrs[i].socklen = sizeof(struct sockaddr_in); 879 ((struct sockaddr_in6 *) sockaddr)->sin6_port = port;
873 880 break;
874 len = NGX_INET_ADDRSTRLEN + sizeof(":65535") - 1; 881 #endif
875 882 default: /* AF_INET */
876 p = ngx_pnalloc(ctx->pool, len); 883 ((struct sockaddr_in *) sockaddr)->sin_port = port;
884 }
885
886 ctx->addrs[i].sockaddr = sockaddr;
887 ctx->addrs[i].socklen = socklen;
888
889 p = ngx_pnalloc(ctx->pool, NGX_SOCKADDR_STRLEN);
877 if (p == NULL) { 890 if (p == NULL) {
878 goto failed; 891 goto failed;
879 } 892 }
880 893
881 len = ngx_sock_ntop((struct sockaddr *) sin, sizeof(struct sockaddr_in), 894 len = ngx_sock_ntop(sockaddr, socklen, p, NGX_SOCKADDR_STRLEN, 1);
882 p, len, 1);
883 895
884 ctx->addrs[i].name.len = len; 896 ctx->addrs[i].name.len = len;
885 ctx->addrs[i].name.data = p; 897 ctx->addrs[i].name.data = p;
886 } 898 }
887 899