Skip to content

Commit 2ccf27c

Browse files
committed
[fix] fix some compatibility bugs.
1 parent d00945d commit 2ccf27c

File tree

3 files changed

+77
-6
lines changed

3 files changed

+77
-6
lines changed

ngx_rtmp.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,9 @@ enum {
236236
};
237237

238238

239+
#define NGX_RTMP_INTERNAL_SERVER_ERROR 500
240+
241+
239242
typedef struct {
240243
uint32_t csid; /* chunk stream id */
241244
uint32_t timestamp; /* timestamp (delta) */

ngx_rtmp_core_module.c

Lines changed: 63 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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
779782
ngx_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++) {

ngx_rtmp_script.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1069,20 +1069,30 @@ ngx_rtmp_script_full_name_code(ngx_rtmp_script_engine_t *e)
10691069
{
10701070
ngx_rtmp_script_full_name_code_t *code;
10711071

1072-
ngx_str_t value, *prefix;
1072+
ngx_str_t value;
1073+
1074+
#if (nginx_version >= 1005003)
1075+
ngx_str_t *prefix;
1076+
#endif
10731077

10741078
code = (ngx_rtmp_script_full_name_code_t *) e->ip;
10751079

10761080
value.data = e->buf.data;
10771081
value.len = e->pos - e->buf.data;
10781082

1083+
#if (nginx_version >= 1005003)
10791084
prefix = code->conf_prefix ? (ngx_str_t *) &ngx_cycle->conf_prefix:
10801085
(ngx_str_t *) &ngx_cycle->prefix;
10811086

10821087
if (ngx_get_full_name(e->request->connection->pool, prefix,
10831088
&value) != NGX_OK)
1089+
#else
1090+
if (ngx_conf_full_name((ngx_cycle_t *) ngx_cycle, &value,
1091+
code->conf_prefix) != NGX_OK)
1092+
#endif
10841093
{
10851094
e->ip = ngx_rtmp_script_exit;
1095+
e->status = NGX_RTMP_INTERNAL_SERVER_ERROR;
10861096
return;
10871097
}
10881098

0 commit comments

Comments
 (0)