mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
refine config, check chunk size.
This commit is contained in:
parent
630bdf0c80
commit
7865b0e935
3 changed files with 43 additions and 19 deletions
|
@ -1180,6 +1180,8 @@ int SrsConfig::parse_file(const char* filename)
|
||||||
int SrsConfig::check_config()
|
int SrsConfig::check_config()
|
||||||
{
|
{
|
||||||
int ret = ERROR_SUCCESS;
|
int ret = ERROR_SUCCESS;
|
||||||
|
|
||||||
|
vector<SrsConfDirective*> vhosts = get_vhosts();
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
// check empty
|
// check empty
|
||||||
|
@ -1256,7 +1258,6 @@ int SrsConfig::check_config()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (true) {
|
if (true) {
|
||||||
vector<SrsConfDirective*> vhosts = get_vhosts();
|
|
||||||
for (int i = 0; i < (int)vhosts.size(); i++) {
|
for (int i = 0; i < (int)vhosts.size(); i++) {
|
||||||
SrsConfDirective* conf = vhosts[i];
|
SrsConfDirective* conf = vhosts[i];
|
||||||
for (int i = 0; conf && i < (int)conf->directives.size(); i++) {
|
for (int i = 0; conf && i < (int)conf->directives.size(); i++) {
|
||||||
|
@ -1441,7 +1442,30 @@ int SrsConfig::check_config()
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: FIXME: check others.
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
// check chunk size
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
if (get_global_chunk_size() < SRS_CONSTS_RTMP_MIN_CHUNK_SIZE
|
||||||
|
|| get_global_chunk_size() > SRS_CONSTS_RTMP_MAX_CHUNK_SIZE
|
||||||
|
) {
|
||||||
|
ret = ERROR_SYSTEM_CONFIG_INVALID;
|
||||||
|
srs_error("directive chunk_size invalid, chunk_size=%d, must in [%d, %d], ret=%d",
|
||||||
|
get_global_chunk_size(), SRS_CONSTS_RTMP_MIN_CHUNK_SIZE,
|
||||||
|
SRS_CONSTS_RTMP_MAX_CHUNK_SIZE, ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < (int)vhosts.size(); i++) {
|
||||||
|
SrsConfDirective* vhost = vhosts[i];
|
||||||
|
if (get_chunk_size(vhost->arg0()) < SRS_CONSTS_RTMP_MIN_CHUNK_SIZE
|
||||||
|
|| get_chunk_size(vhost->arg0()) > SRS_CONSTS_RTMP_MAX_CHUNK_SIZE
|
||||||
|
) {
|
||||||
|
ret = ERROR_SYSTEM_CONFIG_INVALID;
|
||||||
|
srs_error("directive vhost %s chunk_size invalid, chunk_size=%d, must in [%d, %d], ret=%d",
|
||||||
|
vhost->arg0().c_str(), get_chunk_size(vhost->arg0()), SRS_CONSTS_RTMP_MIN_CHUNK_SIZE,
|
||||||
|
SRS_CONSTS_RTMP_MAX_CHUNK_SIZE, ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
// check log name and level
|
// check log name and level
|
||||||
|
@ -1475,7 +1499,6 @@ int SrsConfig::check_config()
|
||||||
srs_warn("http_api is disabled by configure");
|
srs_warn("http_api is disabled by configure");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
vector<SrsConfDirective*> vhosts = get_vhosts();
|
|
||||||
for (int i = 0; i < (int)vhosts.size(); i++) {
|
for (int i = 0; i < (int)vhosts.size(); i++) {
|
||||||
SrsConfDirective* vhost = vhosts[i];
|
SrsConfDirective* vhost = vhosts[i];
|
||||||
srs_assert(vhost != NULL);
|
srs_assert(vhost != NULL);
|
||||||
|
|
|
@ -49,6 +49,20 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
#define SRS_CONSTS_RTMP_SRS_CHUNK_SIZE 60000
|
#define SRS_CONSTS_RTMP_SRS_CHUNK_SIZE 60000
|
||||||
// 6. Chunking, RTMP protocol default chunk size.
|
// 6. Chunking, RTMP protocol default chunk size.
|
||||||
#define SRS_CONSTS_RTMP_PROTOCOL_CHUNK_SIZE 128
|
#define SRS_CONSTS_RTMP_PROTOCOL_CHUNK_SIZE 128
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 6. Chunking
|
||||||
|
* The chunk size is configurable. It can be set using a control
|
||||||
|
* message(Set Chunk Size) as described in section 7.1. The maximum
|
||||||
|
* chunk size can be 65536 bytes and minimum 128 bytes. Larger values
|
||||||
|
* reduce CPU usage, but also commit to larger writes that can delay
|
||||||
|
* other content on lower bandwidth connections. Smaller chunks are not
|
||||||
|
* good for high-bit rate streaming. Chunk size is maintained
|
||||||
|
* independently for each direction.
|
||||||
|
*/
|
||||||
|
#define SRS_CONSTS_RTMP_MIN_CHUNK_SIZE 128
|
||||||
|
#define SRS_CONSTS_RTMP_MAX_CHUNK_SIZE 65536
|
||||||
|
|
||||||
|
|
||||||
// the following is the timeout for rtmp protocol,
|
// the following is the timeout for rtmp protocol,
|
||||||
// to avoid death connection.
|
// to avoid death connection.
|
||||||
|
|
|
@ -168,19 +168,6 @@ messages.
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
/**
|
|
||||||
* 6. Chunking
|
|
||||||
* The chunk size is configurable. It can be set using a control
|
|
||||||
* message(Set Chunk Size) as described in section 7.1. The maximum
|
|
||||||
* chunk size can be 65536 bytes and minimum 128 bytes. Larger values
|
|
||||||
* reduce CPU usage, but also commit to larger writes that can delay
|
|
||||||
* other content on lower bandwidth connections. Smaller chunks are not
|
|
||||||
* good for high-bit rate streaming. Chunk size is maintained
|
|
||||||
* independently for each direction.
|
|
||||||
*/
|
|
||||||
#define RTMP_MIN_CHUNK_SIZE 128
|
|
||||||
#define RTMP_MAX_CHUNK_SIZE 65536
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 6.1. Chunk Format
|
* 6.1. Chunk Format
|
||||||
* Extended timestamp: 0 or 4 bytes
|
* Extended timestamp: 0 or 4 bytes
|
||||||
|
@ -3724,16 +3711,16 @@ int SrsSetChunkSizePacket::decode(SrsStream* stream)
|
||||||
chunk_size = stream->read_4bytes();
|
chunk_size = stream->read_4bytes();
|
||||||
srs_info("decode chunk size success. chunk_size=%d", chunk_size);
|
srs_info("decode chunk size success. chunk_size=%d", chunk_size);
|
||||||
|
|
||||||
if (chunk_size < RTMP_MIN_CHUNK_SIZE) {
|
if (chunk_size < SRS_CONSTS_RTMP_MIN_CHUNK_SIZE) {
|
||||||
ret = ERROR_RTMP_CHUNK_SIZE;
|
ret = ERROR_RTMP_CHUNK_SIZE;
|
||||||
srs_error("invalid chunk size. min=%d, actual=%d, ret=%d",
|
srs_error("invalid chunk size. min=%d, actual=%d, ret=%d",
|
||||||
ERROR_RTMP_CHUNK_SIZE, chunk_size, ret);
|
ERROR_RTMP_CHUNK_SIZE, chunk_size, ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
if (chunk_size > RTMP_MAX_CHUNK_SIZE) {
|
if (chunk_size > SRS_CONSTS_RTMP_MAX_CHUNK_SIZE) {
|
||||||
ret = ERROR_RTMP_CHUNK_SIZE;
|
ret = ERROR_RTMP_CHUNK_SIZE;
|
||||||
srs_error("invalid chunk size. max=%d, actual=%d, ret=%d",
|
srs_error("invalid chunk size. max=%d, actual=%d, ret=%d",
|
||||||
RTMP_MAX_CHUNK_SIZE, chunk_size, ret);
|
SRS_CONSTS_RTMP_MAX_CHUNK_SIZE, chunk_size, ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue