@@ -713,7 +713,10 @@ ngx_rtmp_core_server(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
713713#endif
714714 lsopt .wildcard = 1 ;
715715
716- (void ) ngx_sock_ntop (& lsopt .sockaddr .sockaddr , lsopt .socklen ,
716+ (void ) ngx_sock_ntop (& lsopt .sockaddr .sockaddr ,
717+ #if (nginx_version >= 1005003 )
718+ lsopt .socklen ,
719+ #endif
717720 lsopt .addr , NGX_SOCKADDR_STRLEN , 1 );
718721
719722 if (ngx_rtmp_add_listen (cf , cscf , & lsopt ) != NGX_OK ) {
@@ -779,22 +782,70 @@ static ngx_int_t
779782ngx_rtmp_add_addresses (ngx_conf_t * cf , ngx_rtmp_core_srv_conf_t * cscf ,
780783 ngx_rtmp_conf_port_t * port , ngx_rtmp_listen_opt_t * lsopt )
781784{
782- ngx_uint_t i , default_server , proxy_protocol ;
785+ #if (nginx_version <= 1005007 )
786+ u_char * p , * sockaddr_data , * sa_data ;
787+ size_t len , off ;
788+ struct sockaddr * sa ;
789+
790+ #if (NGX_HAVE_UNIX_DOMAIN )
791+ struct sockaddr_un * saun ;
792+ #endif
793+
794+ #endif
795+
796+ #if (nginx_version >= 1005012 )
797+ ngx_uint_t proxy_protocol ;
798+ #endif
799+
800+ ngx_uint_t i , default_server ;
783801 ngx_rtmp_conf_addr_t * addr ;
784802
785803 /*
786804 * we cannot compare whole sockaddr struct's as kernel
787805 * may fill some fields in inherited sockaddr struct's
788806 */
789807
808+ #if (nginx_version <= 1005007 )
809+ sa = (struct sockaddr * ) & lsopt -> sockaddr ;
810+ sockaddr_data = (u_char * ) & lsopt -> sockaddr ;
811+
812+ switch (sa -> sa_family ) {
813+
814+ #if (NGX_HAVE_INET6 )
815+ case AF_INET6 :
816+ off = offsetof(struct sockaddr_in6 , sin6_addr );
817+ len = 16 ;
818+ break ;
819+ #endif
820+
821+ #if (NGX_HAVE_UNIX_DOMAIN )
822+ case AF_UNIX :
823+ off = offsetof(struct sockaddr_un , sun_path );
824+ len = sizeof (saun -> sun_path );
825+ break ;
826+ #endif
827+
828+ default : /* AF_INET */
829+ off = offsetof(struct sockaddr_in , sin_addr );
830+ len = 4 ;
831+ break ;
832+ }
833+
834+ p = sockaddr_data + off ;
835+ #endif
836+
790837 addr = port -> addrs .elts ;
791838
792839 for (i = 0 ; i < port -> addrs .nelts ; i ++ ) {
793-
840+ #if (nginx_version <= 1005007 )
841+ sa_data = (u_char * ) & addr [i ].opt .sockaddr ;
842+ if (ngx_memcmp (p , sa_data + off , len ) != 0 )
843+ #else
794844 if (ngx_cmp_sockaddr (& lsopt -> sockaddr .sockaddr , lsopt -> socklen ,
795845 & addr [i ].opt .sockaddr .sockaddr ,
796846 addr [i ].opt .socklen , 0 )
797847 != NGX_OK )
848+ #endif
798849 {
799850 continue ;
800851 }
@@ -807,8 +858,9 @@ ngx_rtmp_add_addresses(ngx_conf_t *cf, ngx_rtmp_core_srv_conf_t *cscf,
807858
808859 /* preserve default_server bit during listen options overwriting */
809860 default_server = addr [i ].opt .default_server ;
810-
861+ #if ( nginx_version >= 1005012 )
811862 proxy_protocol = lsopt -> proxy_protocol || addr [i ].opt .proxy_protocol ;
863+ #endif
812864
813865 if (lsopt -> set ) {
814866
@@ -836,7 +888,9 @@ ngx_rtmp_add_addresses(ngx_conf_t *cf, ngx_rtmp_core_srv_conf_t *cscf,
836888 }
837889
838890 addr [i ].opt .default_server = default_server ;
891+ #if (nginx_version >= 1005012 )
839892 addr [i ].opt .proxy_protocol = proxy_protocol ;
893+ #endif
840894
841895 return NGX_OK ;
842896 }
@@ -1166,7 +1220,11 @@ ngx_rtmp_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
11661220 lsopt .ipv6only = 1 ;
11671221#endif
11681222
1169- (void ) ngx_sock_ntop (& lsopt .sockaddr .sockaddr , lsopt .socklen , lsopt .addr ,
1223+ (void ) ngx_sock_ntop (& lsopt .sockaddr .sockaddr ,
1224+ #if (nginx_version >= 1005003 )
1225+ lsopt .socklen ,
1226+ #endif
1227+ lsopt .addr ,
11701228 NGX_SOCKADDR_STRLEN , 1 );
11711229
11721230 for (n = 2 ; n < cf -> args -> nelts ; n ++ ) {
0 commit comments