Mercurial > hg > nginx
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 |