1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

default to 30s timeout for librtmp

This commit is contained in:
winlin 2016-08-10 22:29:56 +08:00
parent 02fb0779be
commit 304ff02aef
2 changed files with 43 additions and 17 deletions

View file

@ -53,6 +53,9 @@ using namespace std;
ISrsLog* _srs_log = new ISrsLog();
ISrsThreadContext* _srs_context = new ISrsThreadContext();
// use this default timeout in us, if user not set.
#define SRS_SOCKET_DEFAULT_TIMEOUT 30 * 1000 * 1000LL
/**
* export runtime context.
*/
@ -104,6 +107,10 @@ struct Context
// the aac sequence header.
std::string aac_specific_config;
// user set timeout, in us.
int64_t stimeout;
int64_t rtimeout;
Context() {
rtmp = NULL;
skt = NULL;
@ -112,6 +119,7 @@ struct Context
h264_sps_pps_sent = false;
h264_sps_changed = false;
h264_pps_changed = false;
rtimeout = stimeout = -1;
}
virtual ~Context() {
srs_freep(req);
@ -577,9 +585,12 @@ int srs_rtmp_set_timeout(srs_rtmp_t rtmp, int recv_timeout_ms, int send_timeout_
}
Context* context = (Context*)rtmp;
context->stimeout = send_timeout_ms * 1000;
context->rtimeout = recv_timeout_ms * 1000;
context->skt->set_recv_timeout(recv_timeout_ms * 1000LL);
context->skt->set_send_timeout(send_timeout_ms * 1000LL);
context->skt->set_recv_timeout(context->rtimeout);
context->skt->set_send_timeout(context->stimeout);
return ret;
}
@ -640,6 +651,16 @@ int srs_rtmp_connect_server(srs_rtmp_t rtmp)
srs_assert(rtmp != NULL);
Context* context = (Context*)rtmp;
// set timeout if user not set.
if (context->stimeout == -1) {
context->stimeout = SRS_SOCKET_DEFAULT_TIMEOUT;
context->skt->set_send_timeout(context->stimeout);
}
if (context->rtimeout == -1) {
context->rtimeout = SRS_SOCKET_DEFAULT_TIMEOUT;
context->skt->set_recv_timeout(context->rtimeout);
}
if ((ret = srs_librtmp_context_connect(context)) != ERROR_SUCCESS) {
return ret;
}