Skip to content

Commit d00945d

Browse files
author
wangxingyuan
committed
[fix] fix some compatibility bugs.
1 parent e37bd9c commit d00945d

File tree

2 files changed

+80
-1
lines changed

2 files changed

+80
-1
lines changed

ngx_rtmp.c

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -777,9 +777,11 @@ ngx_rtmp_init_listening(ngx_conf_t *cf, ngx_rtmp_conf_port_t *port)
777777
break;
778778
}
779779

780+
#if (NGX_HAVE_REUSEPORT)
780781
if (ngx_clone_listening(cf, ls) != NGX_OK) {
781782
return NGX_ERROR;
782783
}
784+
#endif
783785

784786
addr++;
785787
last--;
@@ -1340,3 +1342,63 @@ ngx_rtmp_find_virtual_server(ngx_connection_t *c,
13401342

13411343
return NGX_DECLINED;
13421344
}
1345+
1346+
1347+
#if (nginx_version <= 1011001)
1348+
in_port_t
1349+
ngx_inet_get_port(struct sockaddr *sa)
1350+
{
1351+
struct sockaddr_in *sin;
1352+
#if (NGX_HAVE_INET6)
1353+
struct sockaddr_in6 *sin6;
1354+
#endif
1355+
1356+
switch (sa->sa_family) {
1357+
1358+
#if (NGX_HAVE_INET6)
1359+
case AF_INET6:
1360+
sin6 = (struct sockaddr_in6 *) sa;
1361+
return ntohs(sin6->sin6_port);
1362+
#endif
1363+
1364+
#if (NGX_HAVE_UNIX_DOMAIN)
1365+
case AF_UNIX:
1366+
return 0;
1367+
#endif
1368+
1369+
default: /* AF_INET */
1370+
sin = (struct sockaddr_in *) sa;
1371+
return ntohs(sin->sin_port);
1372+
}
1373+
}
1374+
1375+
1376+
void
1377+
ngx_inet_set_port(struct sockaddr *sa, in_port_t port)
1378+
{
1379+
struct sockaddr_in *sin;
1380+
#if (NGX_HAVE_INET6)
1381+
struct sockaddr_in6 *sin6;
1382+
#endif
1383+
1384+
switch (sa->sa_family) {
1385+
1386+
#if (NGX_HAVE_INET6)
1387+
case AF_INET6:
1388+
sin6 = (struct sockaddr_in6 *) sa;
1389+
sin6->sin6_port = htons(port);
1390+
break;
1391+
#endif
1392+
1393+
#if (NGX_HAVE_UNIX_DOMAIN)
1394+
case AF_UNIX:
1395+
break;
1396+
#endif
1397+
1398+
default: /* AF_INET */
1399+
sin = (struct sockaddr_in *) sa;
1400+
sin->sin_port = htons(port);
1401+
break;
1402+
}
1403+
}
1404+
#endif

ngx_rtmp.h

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,20 @@ typedef struct {
8282
} ngx_rtmp_conf_port_t;
8383

8484

85+
#if (nginx_version <= 1010003)
86+
typedef union {
87+
struct sockaddr sockaddr;
88+
struct sockaddr_in sockaddr_in;
89+
#if (NGX_HAVE_INET6)
90+
struct sockaddr_in6 sockaddr_in6;
91+
#endif
92+
#if (NGX_HAVE_UNIX_DOMAIN)
93+
struct sockaddr_un sockaddr_un;
94+
#endif
95+
} ngx_sockaddr_t;
96+
#endif
97+
98+
8599
typedef struct {
86100
ngx_sockaddr_t sockaddr;
87101
socklen_t socklen;
@@ -821,6 +835,9 @@ ngx_int_t ngx_rtmp_validate_host(ngx_str_t *host, ngx_pool_t *pool,
821835
ngx_int_t ngx_rtmp_set_virtual_server(ngx_rtmp_session_t *s, ngx_str_t *host);
822836
ngx_int_t ngx_rtmp_process_request_line(ngx_rtmp_session_t *s,
823837
const u_char *name, const u_char *args, const u_char *cmd);
824-
838+
#if (nginx_version <= 1011001)
839+
in_port_t ngx_inet_get_port(struct sockaddr *sa);
840+
void ngx_inet_set_port(struct sockaddr *sa, in_port_t port);
841+
#endif
825842

826843
#endif /* _NGX_RTMP_H_INCLUDED_ */

0 commit comments

Comments
 (0)