comparison src/core/ngx_inet.c @ 6559:adf25b8d0431

Introduced the ngx_sockaddr_t type. It's properly aligned and can hold any supported sockaddr.
author Ruslan Ermilov <ru@nginx.com>
date Mon, 23 May 2016 16:37:20 +0300
parents 19a54ba76c04
children 19db5a6bc34e
comparison
equal deleted inserted replaced
6558:68854ce64ec7 6559:adf25b8d0431
761 sin = ngx_pcalloc(pool, sizeof(struct sockaddr_in)); 761 sin = ngx_pcalloc(pool, sizeof(struct sockaddr_in));
762 if (sin == NULL) { 762 if (sin == NULL) {
763 return NGX_ERROR; 763 return NGX_ERROR;
764 } 764 }
765 765
766 ngx_memcpy(sin, u->sockaddr, sizeof(struct sockaddr_in)); 766 ngx_memcpy(sin, &u->sockaddr, sizeof(struct sockaddr_in));
767 767
768 u->addrs[0].sockaddr = (struct sockaddr *) sin; 768 u->addrs[0].sockaddr = (struct sockaddr *) sin;
769 u->addrs[0].socklen = sizeof(struct sockaddr_in); 769 u->addrs[0].socklen = sizeof(struct sockaddr_in);
770 770
771 p = ngx_pnalloc(pool, u->host.len + sizeof(":65535") - 1); 771 p = ngx_pnalloc(pool, u->host.len + sizeof(":65535") - 1);
788 return NGX_ERROR; 788 return NGX_ERROR;
789 } 789 }
790 790
791 u->family = u->addrs[0].sockaddr->sa_family; 791 u->family = u->addrs[0].sockaddr->sa_family;
792 u->socklen = u->addrs[0].socklen; 792 u->socklen = u->addrs[0].socklen;
793 ngx_memcpy(u->sockaddr, u->addrs[0].sockaddr, u->addrs[0].socklen); 793 ngx_memcpy(&u->sockaddr, u->addrs[0].sockaddr, u->addrs[0].socklen);
794 794
795 switch (u->family) { 795 switch (u->family) {
796 796
797 #if (NGX_HAVE_INET6) 797 #if (NGX_HAVE_INET6)
798 case AF_INET6: 798 case AF_INET6:
918 sin6 = ngx_pcalloc(pool, sizeof(struct sockaddr_in6)); 918 sin6 = ngx_pcalloc(pool, sizeof(struct sockaddr_in6));
919 if (sin6 == NULL) { 919 if (sin6 == NULL) {
920 return NGX_ERROR; 920 return NGX_ERROR;
921 } 921 }
922 922
923 ngx_memcpy(sin6, u->sockaddr, sizeof(struct sockaddr_in6)); 923 ngx_memcpy(sin6, &u->sockaddr, sizeof(struct sockaddr_in6));
924 924
925 u->addrs[0].sockaddr = (struct sockaddr *) sin6; 925 u->addrs[0].sockaddr = (struct sockaddr *) sin6;
926 u->addrs[0].socklen = sizeof(struct sockaddr_in6); 926 u->addrs[0].socklen = sizeof(struct sockaddr_in6);
927 927
928 p = ngx_pnalloc(pool, u->host.len + sizeof(":65535") - 1); 928 p = ngx_pnalloc(pool, u->host.len + sizeof(":65535") - 1);