diff --git a/ngx_rtmp_core_module.c b/ngx_rtmp_core_module.c index 567f011..f1f9e94 100644 --- a/ngx_rtmp_core_module.c +++ b/ngx_rtmp_core_module.c @@ -504,6 +504,7 @@ ngx_rtmp_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) struct sockaddr *sa; ngx_rtmp_listen_t *ls; struct sockaddr_in *sin; + u_char *sa_cp; ngx_rtmp_core_main_conf_t *cmcf; #if (NGX_HAVE_INET6) struct sockaddr_in6 *sin6; @@ -558,7 +559,8 @@ ngx_rtmp_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) } #if (nginx_version >= 1011000) - if (ngx_memcmp(ls[i].sockaddr + off, &u.sockaddr + off, len) != 0) { + sa_cp = (u_char *)(&u.sockaddr); + if (ngx_memcmp(ls[i].sockaddr + off, sa_cp + off, len) != 0) { #else if (ngx_memcmp(ls[i].sockaddr + off, u.sockaddr + off, len) != 0) { #endif @@ -582,7 +584,8 @@ ngx_rtmp_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) ngx_memzero(ls, sizeof(ngx_rtmp_listen_t)); #if (nginx_version >= 1011000) - ngx_memcpy(ls->sockaddr, &u.sockaddr, u.socklen); + sa_cp = (u_char *)(&u.sockaddr); + ngx_memcpy(ls->sockaddr, sa_cp, u.socklen); #else ngx_memcpy(ls->sockaddr, u.sockaddr, u.socklen); #endif @@ -600,7 +603,6 @@ ngx_rtmp_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) if (ngx_strncmp(value[i].data, "ipv6only=o", 10) == 0) { #if (NGX_HAVE_INET6 && defined IPV6_V6ONLY) - struct sockaddr *sa; u_char buf[NGX_SOCKADDR_STRLEN]; sa = (struct sockaddr *) ls->sockaddr;