Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
胡斌
/
srs
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
winlin
2015-08-21 13:43:33 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
3c402cb908c5447cbbdbdb51486ae0472ee08a8a
3c402cb9
1 parent
c31a546e
refine the tcp nodelay, effect connected connections.
显示空白字符变更
内嵌
并排对比
正在显示
5 个修改的文件
包含
46 行增加
和
7 行删除
trunk/src/app/srs_app_config.cpp
trunk/src/app/srs_app_reload.cpp
trunk/src/app/srs_app_reload.hpp
trunk/src/app/srs_app_rtmp_conn.cpp
trunk/src/app/srs_app_rtmp_conn.hpp
trunk/src/app/srs_app_config.cpp
查看文件 @
3c402cb
...
...
@@ -768,6 +768,17 @@ int SrsConfig::reload_vhost(SrsConfDirective* old_root)
}
srs_trace
(
"vhost %s reload smi success."
,
vhost
.
c_str
());
}
// tcp_nodelay, only one per vhost
if
(
!
srs_directive_equals
(
new_vhost
->
get
(
"tcp_nodelay"
),
old_vhost
->
get
(
"tcp_nodelay"
)))
{
for
(
it
=
subscribes
.
begin
();
it
!=
subscribes
.
end
();
++
it
)
{
ISrsReloadHandler
*
subscribe
=
*
it
;
if
((
ret
=
subscribe
->
on_reload_vhost_tcp_nodelay
(
vhost
))
!=
ERROR_SUCCESS
)
{
srs_error
(
"vhost %s notify subscribes tcp_nodelay failed. ret=%d"
,
vhost
.
c_str
(),
ret
);
return
ret
;
}
}
srs_trace
(
"vhost %s reload tcp_nodelay success."
,
vhost
.
c_str
());
}
// publish_1stpkt_timeout, only one per vhost
if
(
!
srs_directive_equals
(
new_vhost
->
get
(
"publish_1stpkt_timeout"
),
old_vhost
->
get
(
"publish_1stpkt_timeout"
)))
{
for
(
it
=
subscribes
.
begin
();
it
!=
subscribes
.
end
();
++
it
)
{
...
...
trunk/src/app/srs_app_reload.cpp
查看文件 @
3c402cb
...
...
@@ -175,6 +175,11 @@ int ISrsReloadHandler::on_reload_vhost_smi(string /*vhost*/)
return
ERROR_SUCCESS
;
}
int
ISrsReloadHandler
::
on_reload_vhost_tcp_nodelay
(
string
/*vhost*/
)
{
return
ERROR_SUCCESS
;
}
int
ISrsReloadHandler
::
on_reload_vhost_realtime
(
string
/*vhost*/
)
{
return
ERROR_SUCCESS
;
...
...
trunk/src/app/srs_app_reload.hpp
查看文件 @
3c402cb
...
...
@@ -74,6 +74,7 @@ public:
virtual
int
on_reload_vhost_mr
(
std
::
string
vhost
);
virtual
int
on_reload_vhost_mw
(
std
::
string
vhost
);
virtual
int
on_reload_vhost_smi
(
std
::
string
vhost
);
virtual
int
on_reload_vhost_tcp_nodelay
(
std
::
string
vhost
);
virtual
int
on_reload_vhost_realtime
(
std
::
string
vhost
);
virtual
int
on_reload_vhost_p1stpt
(
std
::
string
vhost
);
virtual
int
on_reload_vhost_pnt
(
std
::
string
vhost
);
...
...
trunk/src/app/srs_app_rtmp_conn.cpp
查看文件 @
3c402cb
...
...
@@ -94,6 +94,7 @@ SrsRtmpConn::SrsRtmpConn(SrsServer* svr, st_netfd_t c)
mw_enabled
=
false
;
realtime
=
SRS_PERF_MIN_LATENCY_ENABLED
;
send_min_interval
=
0
;
tcp_nodelay
=
false
;
_srs_config
->
subscribe
(
this
);
}
...
...
@@ -265,6 +266,19 @@ int SrsRtmpConn::on_reload_vhost_smi(string vhost)
return
ret
;
}
int
SrsRtmpConn
::
on_reload_vhost_tcp_nodelay
(
string
vhost
)
{
int
ret
=
ERROR_SUCCESS
;
if
(
req
->
vhost
!=
vhost
)
{
return
ret
;
}
set_sock_options
();
return
ret
;
}
int
SrsRtmpConn
::
on_reload_vhost_realtime
(
string
vhost
)
{
int
ret
=
ERROR_SUCCESS
;
...
...
@@ -651,8 +665,8 @@ int SrsRtmpConn::do_playing(SrsSource* source, SrsConsumer* consumer, SrsQueueRe
// set the sock options.
set_sock_options
();
srs_trace
(
"start play smi=%.2f, mw_sleep=%d, mw_enabled=%d, realtime=%d"
,
send_min_interval
,
mw_sleep
,
mw_enabled
,
realtime
);
srs_trace
(
"start play smi=%.2f, mw_sleep=%d, mw_enabled=%d, realtime=%d, tcp_nodelay=%d"
,
send_min_interval
,
mw_sleep
,
mw_enabled
,
realtime
,
tcp_nodelay
);
while
(
!
disposed
)
{
// collect elapse for pithy print.
...
...
@@ -837,15 +851,18 @@ int SrsRtmpConn::do_publishing(SrsSource* source, SrsPublishRecvThread* trd)
return
ret
;
}
// initialize the publish timeout.
publish_1stpkt_timeout
=
_srs_config
->
get_publish_1stpkt_timeout
(
req
->
vhost
);
publish_normal_timeout
=
_srs_config
->
get_publish_1stpkt_timeout
(
req
->
vhost
);
// set the sock options.
set_sock_options
();
if
(
true
)
{
bool
mr
=
_srs_config
->
get_mr_enabled
(
req
->
vhost
);
int
mr_sleep
=
_srs_config
->
get_mr_sleep_ms
(
req
->
vhost
);
publish_1stpkt_timeout
=
_srs_config
->
get_publish_1stpkt_timeout
(
req
->
vhost
);
publish_normal_timeout
=
_srs_config
->
get_publish_1stpkt_timeout
(
req
->
vhost
);
srs_trace
(
"start publish mr=%d/%d, p1stpt=%d, pnt=%d"
,
mr
,
mr_sleep
,
publish_1stpkt_timeout
,
publish_normal_timeout
);
srs_trace
(
"start publish mr=%d/%d, p1stpt=%d, pnt=%d, tcp_nodelay=%d"
,
mr
,
mr_sleep
,
publish_1stpkt_timeout
,
publish_normal_timeout
,
tcp_nodelay
);
}
int64_t
nb_msgs
=
0
;
...
...
@@ -1173,7 +1190,9 @@ void SrsRtmpConn::change_mw_sleep(int sleep_ms)
void
SrsRtmpConn
::
set_sock_options
()
{
if
(
_srs_config
->
get_tcp_nodelay
(
req
->
vhost
))
{
bool
nvalue
=
_srs_config
->
get_tcp_nodelay
(
req
->
vhost
);
if
(
nvalue
!=
tcp_nodelay
)
{
tcp_nodelay
=
nvalue
;
#ifdef SRS_PERF_TCP_NODELAY
int
fd
=
st_netfd_fileno
(
stfd
);
...
...
@@ -1182,7 +1201,7 @@ void SrsRtmpConn::set_sock_options()
int
ov
=
0
;
getsockopt
(
fd
,
IPPROTO_TCP
,
TCP_NODELAY
,
&
ov
,
&
nb_v
);
int
v
=
1
;
int
v
=
tcp_nodelay
;
// set the socket send buffer when required larger buffer
if
(
setsockopt
(
fd
,
IPPROTO_TCP
,
TCP_NODELAY
,
&
v
,
nb_v
)
<
0
)
{
srs_warn
(
"set sock TCP_NODELAY=%d failed."
,
v
);
...
...
trunk/src/app/srs_app_rtmp_conn.hpp
查看文件 @
3c402cb
...
...
@@ -91,6 +91,8 @@ private:
int
publish_1stpkt_timeout
;
// publish normal packet timeout in ms
int
publish_normal_timeout
;
// whether enable the tcp_nodelay.
bool
tcp_nodelay
;
public
:
SrsRtmpConn
(
SrsServer
*
svr
,
st_netfd_t
c
);
virtual
~
SrsRtmpConn
();
...
...
@@ -103,6 +105,7 @@ public:
virtual
int
on_reload_vhost_removed
(
std
::
string
vhost
);
virtual
int
on_reload_vhost_mw
(
std
::
string
vhost
);
virtual
int
on_reload_vhost_smi
(
std
::
string
vhost
);
virtual
int
on_reload_vhost_tcp_nodelay
(
std
::
string
vhost
);
virtual
int
on_reload_vhost_realtime
(
std
::
string
vhost
);
virtual
int
on_reload_vhost_p1stpt
(
std
::
string
vhost
);
virtual
int
on_reload_vhost_pnt
(
std
::
string
vhost
);
...
...
请
注册
或
登录
后发表评论