Skip to content

Commit a72e33e

Browse files
committed
fixed proxy protocol event error
1 parent 4e78090 commit a72e33e

File tree

1 file changed

+25
-4
lines changed

1 file changed

+25
-4
lines changed

ngx_rtmp_proxy_protocol.c

+25-4
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,34 @@ static void ngx_rtmp_proxy_protocol_recv(ngx_event_t *rev);
1515
void
1616
ngx_rtmp_proxy_protocol(ngx_rtmp_session_t *s)
1717
{
18+
ngx_event_t *rev;
1819
ngx_connection_t *c;
1920

2021
c = s->connection;
21-
c->read->handler = ngx_rtmp_proxy_protocol_recv;
22+
rev = c->read;
23+
rev->handler = ngx_rtmp_proxy_protocol_recv;
2224

2325
ngx_log_debug0(NGX_LOG_DEBUG_RTMP, s->connection->log, 0,
2426
"proxy_protocol: start");
2527

26-
ngx_rtmp_proxy_protocol_recv(c->read);
28+
if (rev->ready) {
29+
/* the deferred accept(), rtsig, aio, iocp */
30+
31+
if (ngx_use_accept_mutex) {
32+
ngx_post_event(rev, &ngx_posted_events);
33+
return;
34+
}
35+
36+
rev->handler(rev);
37+
return;
38+
}
39+
40+
ngx_add_timer(rev, s->timeout);
41+
42+
if (ngx_handle_read_event(rev, 0) != NGX_OK) {
43+
ngx_rtmp_finalize_session(s);
44+
return;
45+
}
2746
}
2847

2948

@@ -58,10 +77,12 @@ ngx_rtmp_proxy_protocol_recv(ngx_event_t *rev)
5877
ngx_del_timer(rev);
5978
}
6079

61-
n = recv(c->fd, buf, sizeof(buf), MSG_PEEK);
80+
n = recv(c->fd, (char *) buf, sizeof(buf), MSG_PEEK);
6281

6382
err = ngx_socket_errno;
6483

84+
ngx_log_debug1(NGX_LOG_DEBUG_RTMP, c->log, 0, "recv(): %d", n);
85+
6586
if (n == -1) {
6687

6788
if (err == NGX_EAGAIN) {
@@ -126,7 +147,7 @@ ngx_rtmp_proxy_protocol_recv(ngx_event_t *rev)
126147
}
127148
}
128149

129-
if (i + 1 == n) {
150+
if (i + 1 >= n) {
130151
goto bad_header;
131152
}
132153

0 commit comments

Comments
 (0)