mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
SRS: Fix bug
This commit is contained in:
parent
aaebecbcc9
commit
a826926073
26 changed files with 116 additions and 10 deletions
|
@ -151,7 +151,7 @@ srs_error_t SrsBandwidth::bandwidth_check(SrsRtmpServer* rtmp, ISrsProtocolStati
|
|||
// reject the connection in the interval window.
|
||||
if (last_check_time > 0 && time_now - last_check_time < interval) {
|
||||
_rtmp->response_connect_reject(_req, "bandcheck rejected");
|
||||
return srs_error_new(ERROR_SYSTEM_BANDWIDTH_DENIED, "reject, last_check=%" PRId64 ", now=%" PRId64 ", interval=%d", last_check_time, time_now, interval);
|
||||
return srs_error_new(ERROR_SYSTEM_BANDWIDTH_DENIED, "reject, last_check=%" PRId64 ", now=%" PRId64 ", interval=%" PRId64 "", last_check_time, time_now, interval);
|
||||
}
|
||||
|
||||
// accept and do bandwidth check.
|
||||
|
|
|
@ -620,6 +620,7 @@ srs_error_t srs_config_dumps_engine(SrsConfDirective* dir, SrsJsonObject* engine
|
|||
|
||||
SrsConfDirective::SrsConfDirective()
|
||||
{
|
||||
conf_line = 0;
|
||||
}
|
||||
|
||||
SrsConfDirective::~SrsConfDirective()
|
||||
|
|
|
@ -65,6 +65,7 @@ SrsEdgeRtmpUpstream::SrsEdgeRtmpUpstream(string r)
|
|||
{
|
||||
redirect = r;
|
||||
sdk = NULL;
|
||||
selected_port = 0;
|
||||
}
|
||||
|
||||
SrsEdgeRtmpUpstream::~SrsEdgeRtmpUpstream()
|
||||
|
|
|
@ -200,6 +200,7 @@ SrsHlsMuxer::SrsHlsMuxer()
|
|||
accept_floor_ts = 0;
|
||||
hls_ts_floor = false;
|
||||
max_td = 0;
|
||||
writer = NULL;
|
||||
_sequence_no = 0;
|
||||
current = NULL;
|
||||
hls_keys = false;
|
||||
|
@ -758,6 +759,10 @@ srs_error_t SrsHlsMuxer::_refresh_m3u8(string m3u8_file)
|
|||
|
||||
// #EXT-X-MEDIA-SEQUENCE:4294967295\n
|
||||
SrsHlsSegment* first = dynamic_cast<SrsHlsSegment*>(segments->first());
|
||||
if (first == NULL) {
|
||||
return srs_error_new(ERROR_HLS_WRITE_FAILED, "segments cast");
|
||||
}
|
||||
|
||||
ss << "#EXT-X-MEDIA-SEQUENCE:" << first->sequence_no << SRS_CONSTS_LF;
|
||||
|
||||
// #EXT-X-TARGETDURATION:4294967295\n
|
||||
|
|
|
@ -532,7 +532,7 @@ srs_error_t SrsHttpHooks::do_post(SrsHttpClient* hc, std::string url, std::strin
|
|||
}
|
||||
|
||||
if ((res_code->to_integer()) != ERROR_SUCCESS) {
|
||||
return srs_error_new(ERROR_RESPONSE_CODE, "http: response object code %d %s", res_code->to_integer(), res.c_str());
|
||||
return srs_error_new(ERROR_RESPONSE_CODE, "http: response object code %" PRId64 " %s", res_code->to_integer(), res.c_str());
|
||||
}
|
||||
|
||||
return err;
|
||||
|
|
|
@ -38,6 +38,7 @@ using namespace std;
|
|||
SrsIngesterFFMPEG::SrsIngesterFFMPEG()
|
||||
{
|
||||
ffmpeg = NULL;
|
||||
starttime = 0;
|
||||
}
|
||||
|
||||
SrsIngesterFFMPEG::~SrsIngesterFFMPEG()
|
||||
|
|
|
@ -125,6 +125,7 @@ void SrsUdpListener::set_socket_buffer()
|
|||
int r0_sndbuf = 0;
|
||||
if (true) {
|
||||
socklen_t opt_len = sizeof(default_sndbuf);
|
||||
// TODO: FIXME: check err
|
||||
getsockopt(fd(), SOL_SOCKET, SO_SNDBUF, (void*)&default_sndbuf, &opt_len);
|
||||
|
||||
if ((r0_sndbuf = setsockopt(fd(), SOL_SOCKET, SO_SNDBUF, (void*)&actual_sndbuf, sizeof(actual_sndbuf))) < 0) {
|
||||
|
@ -132,6 +133,7 @@ void SrsUdpListener::set_socket_buffer()
|
|||
}
|
||||
|
||||
opt_len = sizeof(actual_sndbuf);
|
||||
// TODO: FIXME: check err
|
||||
getsockopt(fd(), SOL_SOCKET, SO_SNDBUF, (void*)&actual_sndbuf, &opt_len);
|
||||
}
|
||||
|
||||
|
@ -142,6 +144,7 @@ void SrsUdpListener::set_socket_buffer()
|
|||
int r0_rcvbuf = 0;
|
||||
if (true) {
|
||||
socklen_t opt_len = sizeof(default_rcvbuf);
|
||||
// TODO: FIXME: check err
|
||||
getsockopt(fd(), SOL_SOCKET, SO_RCVBUF, (void*)&default_rcvbuf, &opt_len);
|
||||
|
||||
if ((r0_rcvbuf = setsockopt(fd(), SOL_SOCKET, SO_RCVBUF, (void*)&actual_rcvbuf, sizeof(actual_rcvbuf))) < 0) {
|
||||
|
@ -149,6 +152,7 @@ void SrsUdpListener::set_socket_buffer()
|
|||
}
|
||||
|
||||
opt_len = sizeof(actual_rcvbuf);
|
||||
// TODO: FIXME: check err
|
||||
getsockopt(fd(), SOL_SOCKET, SO_RCVBUF, (void*)&actual_rcvbuf, &opt_len);
|
||||
}
|
||||
|
||||
|
@ -288,6 +292,7 @@ SrsUdpMuxSocket::SrsUdpMuxSocket(srs_netfd_t fd)
|
|||
lfd = fd;
|
||||
|
||||
fromlen = 0;
|
||||
peer_port = 0;
|
||||
}
|
||||
|
||||
SrsUdpMuxSocket::~SrsUdpMuxSocket()
|
||||
|
|
|
@ -170,6 +170,7 @@ srs_error_t SrsAudioEncoder::initialize()
|
|||
|
||||
case 24000:
|
||||
opus_encoder_ctl(opus_, OPUS_SET_MAX_BANDWIDTH(OPUS_BANDWIDTH_SUPERWIDEBAND));
|
||||
break;
|
||||
|
||||
case 16000:
|
||||
opus_encoder_ctl(opus_, OPUS_SET_MAX_BANDWIDTH(OPUS_BANDWIDTH_WIDEBAND));
|
||||
|
@ -343,6 +344,11 @@ SrsAudioRecode::SrsAudioRecode(int channels, int samplerate)
|
|||
{
|
||||
size_ = 0;
|
||||
data_ = new char[kPcmBufMax];
|
||||
|
||||
dec_ = NULL;
|
||||
enc_ = NULL;
|
||||
resample_ = NULL;
|
||||
data_ = NULL;
|
||||
}
|
||||
|
||||
SrsAudioRecode::~SrsAudioRecode()
|
||||
|
|
|
@ -316,6 +316,8 @@ SrsDtlsImpl::SrsDtlsImpl(ISrsDtlsCallback* callback)
|
|||
{
|
||||
dtls_ctx = NULL;
|
||||
dtls = NULL;
|
||||
bio_in = NULL;
|
||||
bio_out = NULL;
|
||||
|
||||
callback_ = callback;
|
||||
handshake_done_for_us = false;
|
||||
|
|
|
@ -189,6 +189,7 @@ SrsRtpNackForReceiver::SrsRtpNackForReceiver(SrsRtpRingBuffer* rtp, size_t queue
|
|||
rtp_ = rtp;
|
||||
pre_check_time_ = 0;
|
||||
last_remove_packet_time_ = -1;
|
||||
rtt_ = 0;
|
||||
|
||||
srs_info("max_queue_size=%u, nack opt: max_count=%d, max_alive_time=%us, first_nack_interval=%" PRId64 ", nack_interval=%" PRId64,
|
||||
max_queue_size_, opts_.max_count, opts_.max_alive_time, opts.first_nack_interval, opts_.nack_interval);
|
||||
|
|
|
@ -254,6 +254,7 @@ srs_error_t SrsSSRCGroup::encode(std::ostringstream& os)
|
|||
SrsMediaPayloadType::SrsMediaPayloadType(int payload_type)
|
||||
{
|
||||
payload_type_ = payload_type;
|
||||
clock_rate_ = 0;
|
||||
}
|
||||
|
||||
SrsMediaPayloadType::~SrsMediaPayloadType()
|
||||
|
@ -288,7 +289,9 @@ SrsMediaDesc::SrsMediaDesc(const std::string& type)
|
|||
{
|
||||
type_ = type;
|
||||
|
||||
port_ = 0;
|
||||
rtcp_mux_ = false;
|
||||
rtcp_rsize_ = false;
|
||||
|
||||
sendrecv_ = false;
|
||||
recvonly_ = false;
|
||||
|
|
|
@ -539,6 +539,8 @@ SrsRtcFromRtmpBridger::SrsRtcFromRtmpBridger(SrsRtcStream* source)
|
|||
// audio track description
|
||||
if (true) {
|
||||
SrsRtcTrackDescription* audio_track_desc = new SrsRtcTrackDescription();
|
||||
SrsAutoFree(SrsRtcTrackDescription, audio_track_desc);
|
||||
|
||||
audio_track_desc->type_ = "audio";
|
||||
audio_track_desc->id_ = "audio-" + srs_random_str(8);
|
||||
|
||||
|
@ -553,6 +555,8 @@ SrsRtcFromRtmpBridger::SrsRtcFromRtmpBridger(SrsRtcStream* source)
|
|||
// video track description
|
||||
if (true) {
|
||||
SrsRtcTrackDescription* video_track_desc = new SrsRtcTrackDescription();
|
||||
SrsAutoFree(SrsRtcTrackDescription, video_track_desc);
|
||||
|
||||
video_track_desc->type_ = "video";
|
||||
video_track_desc->id_ = "video-" + srs_random_str(8);
|
||||
|
||||
|
@ -1117,6 +1121,8 @@ void SrsRtcDummyBridger::on_unpublish()
|
|||
|
||||
SrsCodecPayload::SrsCodecPayload()
|
||||
{
|
||||
pt_ = 0;
|
||||
sample_ = 0;
|
||||
}
|
||||
|
||||
SrsCodecPayload::SrsCodecPayload(uint8_t pt, std::string encode_name, int sample)
|
||||
|
@ -1249,7 +1255,7 @@ srs_error_t SrsVideoPayload::set_h264_param_desc(std::string fmtp)
|
|||
|
||||
SrsAudioPayload::SrsAudioPayload()
|
||||
{
|
||||
type_ = "audio";
|
||||
channel_ = 0;
|
||||
}
|
||||
|
||||
SrsAudioPayload::SrsAudioPayload(uint8_t pt, std::string encode_name, int sample, int channel)
|
||||
|
@ -1331,6 +1337,7 @@ srs_error_t SrsAudioPayload::set_opus_param_desc(std::string fmtp)
|
|||
|
||||
SrsRedPayload::SrsRedPayload()
|
||||
{
|
||||
channel_ = 0;
|
||||
}
|
||||
|
||||
SrsRedPayload::SrsRedPayload(uint8_t pt, std::string encode_name, int sample, int channel)
|
||||
|
@ -1604,6 +1611,8 @@ SrsRtcRecvTrack::SrsRtcRecvTrack(SrsRtcConnection* session, SrsRtcTrackDescripti
|
|||
rtp_queue_ = new SrsRtpRingBuffer(1000);
|
||||
nack_receiver_ = new SrsRtpNackForReceiver(rtp_queue_, 1000 * 2 / 3);
|
||||
}
|
||||
|
||||
last_sender_report_sys_time = 0;
|
||||
}
|
||||
|
||||
SrsRtcRecvTrack::~SrsRtcRecvTrack()
|
||||
|
|
|
@ -308,6 +308,12 @@ class SrsAudioPayload : public SrsCodecPayload
|
|||
int minptime;
|
||||
bool use_inband_fec;
|
||||
bool usedtx;
|
||||
|
||||
SrsOpusParameter() {
|
||||
minptime = 0;
|
||||
use_inband_fec = false;
|
||||
usedtx = false;
|
||||
}
|
||||
};
|
||||
|
||||
public:
|
||||
|
|
|
@ -193,6 +193,11 @@ SrsRtspConn::SrsRtspConn(SrsRtspCaster* c, srs_netfd_t fd, std::string o)
|
|||
skt = new SrsStSocket();
|
||||
rtsp = new SrsRtspStack(skt);
|
||||
trd = new SrsSTCoroutine("rtsp", this);
|
||||
|
||||
audio_id = 0;
|
||||
video_id = 0;
|
||||
audio_sample_rate = 0;
|
||||
audio_channel = 0;
|
||||
|
||||
req = NULL;
|
||||
sdk = NULL;
|
||||
|
@ -223,6 +228,9 @@ SrsRtspConn::~SrsRtspConn()
|
|||
|
||||
srs_freep(vjitter);
|
||||
srs_freep(ajitter);
|
||||
|
||||
srs_freep(avc);
|
||||
srs_freep(aac);
|
||||
srs_freep(acodec);
|
||||
srs_freep(acache);
|
||||
}
|
||||
|
|
|
@ -877,7 +877,7 @@ srs_error_t SrsServer::acquire_pid_file()
|
|||
// write the pid
|
||||
string pid = srs_int2str(getpid());
|
||||
if (write(fd, pid.c_str(), pid.length()) != (int)pid.length()) {
|
||||
return srs_error_new(ERROR_SYSTEM_PID_WRITE_FILE, "write pid=%d to file=%s", pid.c_str(), pid_file.c_str());
|
||||
return srs_error_new(ERROR_SYSTEM_PID_WRITE_FILE, "write pid=%s to file=%s", pid.c_str(), pid_file.c_str());
|
||||
}
|
||||
|
||||
// auto close when fork child process.
|
||||
|
|
|
@ -940,6 +940,9 @@ SrsNetworkRtmpServer::SrsNetworkRtmpServer()
|
|||
nb_conn_sys = nb_conn_srs = 0;
|
||||
nb_conn_sys_et = nb_conn_sys_tw = 0;
|
||||
nb_conn_sys_udp = 0;
|
||||
rkbps = skbps = 0;
|
||||
rkbps_30s = skbps_30s = 0;
|
||||
rkbps_5m = skbps_5m = 0;
|
||||
}
|
||||
|
||||
static SrsNetworkRtmpServer _srs_network_rtmp_server;
|
||||
|
|
|
@ -3912,7 +3912,7 @@ srs_error_t SrsMp4DecodingTime2SampleBox::on_sample(uint32_t sample_index, SrsMp
|
|||
index++;
|
||||
|
||||
if (index >= entries.size()) {
|
||||
return srs_error_new(ERROR_MP4_ILLEGAL_TIMESTAMP, "illegal ts, stts overflow, count=%d", entries.size());
|
||||
return srs_error_new(ERROR_MP4_ILLEGAL_TIMESTAMP, "illegal ts, stts overflow, count=%zd", entries.size());
|
||||
}
|
||||
|
||||
count += entries[index].sample_count;
|
||||
|
@ -4038,7 +4038,7 @@ srs_error_t SrsMp4CompositionTime2SampleBox::on_sample(uint32_t sample_index, Sr
|
|||
index++;
|
||||
|
||||
if (index >= entries.size()) {
|
||||
return srs_error_new(ERROR_MP4_ILLEGAL_TIMESTAMP, "illegal ts, ctts overflow, count=%d", entries.size());
|
||||
return srs_error_new(ERROR_MP4_ILLEGAL_TIMESTAMP, "illegal ts, ctts overflow, count=%d", (int)entries.size());
|
||||
}
|
||||
|
||||
count += entries[index].sample_count;
|
||||
|
@ -5217,7 +5217,7 @@ srs_error_t SrsMp4BoxReader::read(SrsSimpleStream* stream, SrsMp4Box** ppbox)
|
|||
while (stream->length() < (int)required) {
|
||||
ssize_t nread;
|
||||
if ((err = rsio->read(buf, SRS_MP4_BUF_SIZE, &nread)) != srs_success) {
|
||||
return srs_error_wrap(err, "load failed, nread=%d, required=%d", (int)nread, required);
|
||||
return srs_error_wrap(err, "load failed, nread=%d, required=%d", (int)nread, (int)required);
|
||||
}
|
||||
|
||||
srs_assert(nread > 0);
|
||||
|
@ -6282,6 +6282,7 @@ SrsMp4M2tsSegmentEncoder::SrsMp4M2tsSegmentEncoder()
|
|||
decode_basetime = 0;
|
||||
styp_bytes = 0;
|
||||
mdat_bytes = 0;
|
||||
track_id = 0;
|
||||
}
|
||||
|
||||
SrsMp4M2tsSegmentEncoder::~SrsMp4M2tsSegmentEncoder()
|
||||
|
|
|
@ -31,6 +31,7 @@ using namespace std;
|
|||
|
||||
SrsRtcpCommon::SrsRtcpCommon(): ssrc_(0), data_(NULL), nb_data_(0)
|
||||
{
|
||||
payload_len_ = 0;
|
||||
}
|
||||
|
||||
SrsRtcpCommon::~SrsRtcpCommon()
|
||||
|
@ -190,7 +191,7 @@ srs_error_t SrsRtcpApp::set_subtype(uint8_t type)
|
|||
srs_error_t SrsRtcpApp::set_name(std::string name)
|
||||
{
|
||||
if(name.length() > 4) {
|
||||
return srs_error_new(ERROR_RTC_RTCP, "invalid name length %d", name.length());
|
||||
return srs_error_new(ERROR_RTC_RTCP, "invalid name length %zu", name.length());
|
||||
}
|
||||
|
||||
memset(name_, 0, sizeof(name_));
|
||||
|
@ -298,6 +299,13 @@ SrsRtcpSR::SrsRtcpSR()
|
|||
header_.rc = 0;
|
||||
header_.version = kRtcpVersion;
|
||||
header_.length = 6;
|
||||
|
||||
ssrc_ = 0;
|
||||
ntp_ = 0;
|
||||
rtp_ts_ = 0;
|
||||
send_rtp_packets_ = 0;
|
||||
send_rtp_bytes_ = 0;
|
||||
send_rtp_bytes_ = 0;
|
||||
}
|
||||
|
||||
SrsRtcpSR::~SrsRtcpSR()
|
||||
|
@ -706,6 +714,11 @@ SrsRtcpTWCC::SrsRtcpTWCC(uint32_t sender_ssrc) : pkt_len(0)
|
|||
header_.rc = 15;
|
||||
header_.version = kRtcpVersion;
|
||||
ssrc_ = sender_ssrc;
|
||||
media_ssrc_ = 0;
|
||||
base_sn_ = 0;
|
||||
packet_count_ = 0;
|
||||
reference_time_ = 0;
|
||||
fb_pkt_count_ = 0;
|
||||
}
|
||||
|
||||
SrsRtcpTWCC::~SrsRtcpTWCC()
|
||||
|
@ -1178,6 +1191,7 @@ SrsRtcpNack::SrsRtcpNack(uint32_t sender_ssrc)
|
|||
header_.rc = 1;
|
||||
header_.version = kRtcpVersion;
|
||||
ssrc_ = sender_ssrc;
|
||||
media_ssrc_ = 0;
|
||||
}
|
||||
|
||||
SrsRtcpNack::~SrsRtcpNack()
|
||||
|
|
|
@ -66,6 +66,14 @@ struct SrsRtcpHeader
|
|||
uint16_t type:8;
|
||||
|
||||
uint16_t length:16;
|
||||
|
||||
SrsRtcpHeader() {
|
||||
rc = 0;
|
||||
padding = 0;
|
||||
version = 0;
|
||||
type = 0;
|
||||
length = 0;
|
||||
}
|
||||
};
|
||||
|
||||
class SrsRtcpCommon: public ISrsCodec
|
||||
|
@ -134,6 +142,16 @@ struct SrsRtcpRB
|
|||
uint32_t jitter;
|
||||
uint32_t lsr;
|
||||
uint32_t dlsr;
|
||||
|
||||
SrsRtcpRB() {
|
||||
ssrc = 0;
|
||||
fraction_lost = 0;
|
||||
lost_packets = 0;
|
||||
highest_sn = 0;
|
||||
jitter = 0;
|
||||
lsr = 0;
|
||||
dlsr = 0;
|
||||
}
|
||||
};
|
||||
|
||||
class SrsRtcpSR : public SrsRtcpCommon
|
||||
|
|
|
@ -63,7 +63,7 @@ SrsRtpExtensionTypes::~SrsRtpExtensionTypes()
|
|||
|
||||
bool SrsRtpExtensionTypes::register_by_uri(int id, std::string uri)
|
||||
{
|
||||
for (int i = 0; i < (int)sizeof(kExtensions); ++i) {
|
||||
for (int i = 0; i < (int)(sizeof(kExtensions)/sizeof(kExtensions[0])); ++i) {
|
||||
if (kExtensions[i].uri == uri) {
|
||||
return register_id(id, kExtensions[i].type, kExtensions[i].uri);
|
||||
}
|
||||
|
|
|
@ -2012,6 +2012,9 @@ SrsTsPayloadPSI::SrsTsPayloadPSI(SrsTsPacket* p) : SrsTsPayload(p)
|
|||
const0_value = 0;
|
||||
const1_value = 3;
|
||||
CRC_32 = 0;
|
||||
section_length = 0;
|
||||
section_syntax_indicator = 0;
|
||||
table_id = SrsTsPsiIdPas;
|
||||
}
|
||||
|
||||
SrsTsPayloadPSI::~SrsTsPayloadPSI()
|
||||
|
@ -2223,7 +2226,12 @@ srs_error_t SrsTsPayloadPATProgram::encode(SrsBuffer* stream)
|
|||
|
||||
SrsTsPayloadPAT::SrsTsPayloadPAT(SrsTsPacket* p) : SrsTsPayloadPSI(p)
|
||||
{
|
||||
transport_stream_id = 0;
|
||||
const3_value = 3;
|
||||
version_number = 0;
|
||||
current_next_indicator = 0;
|
||||
section_number = 0;
|
||||
last_section_number = 0;
|
||||
}
|
||||
|
||||
SrsTsPayloadPAT::~SrsTsPayloadPAT()
|
||||
|
@ -2422,6 +2430,12 @@ SrsTsPayloadPMT::SrsTsPayloadPMT(SrsTsPacket* p) : SrsTsPayloadPSI(p)
|
|||
const1_value0 = 3;
|
||||
const1_value1 = 7;
|
||||
const1_value2 = 0x0f;
|
||||
PCR_PID = 0;
|
||||
last_section_number = 0;
|
||||
program_number = 0;
|
||||
version_number = 0;
|
||||
current_next_indicator = 0;
|
||||
section_number = 0;
|
||||
}
|
||||
|
||||
SrsTsPayloadPMT::~SrsTsPayloadPMT()
|
||||
|
|
|
@ -1761,7 +1761,7 @@ namespace _srs_internal
|
|||
|
||||
// data
|
||||
if (!stream->require((int)value.length())) {
|
||||
return srs_error_new(ERROR_RTMP_AMF0_ENCODE, "requires %d only %d bytes", value.length(), stream->left());
|
||||
return srs_error_new(ERROR_RTMP_AMF0_ENCODE, "requires %" PRIu64 " only %d bytes", value.length(), stream->left());
|
||||
}
|
||||
stream->write_string(value);
|
||||
|
||||
|
|
|
@ -92,6 +92,8 @@ SrsStunPacket::SrsStunPacket()
|
|||
use_candidate = false;
|
||||
ice_controlled = false;
|
||||
ice_controlling = false;
|
||||
mapped_port = 0;
|
||||
mapped_address = 0;
|
||||
}
|
||||
|
||||
SrsStunPacket::~SrsStunPacket()
|
||||
|
|
|
@ -865,6 +865,8 @@ namespace _srs_internal
|
|||
c1s1::c1s1()
|
||||
{
|
||||
payload = NULL;
|
||||
version = 0;
|
||||
time = 0;
|
||||
}
|
||||
c1s1::~c1s1()
|
||||
{
|
||||
|
|
|
@ -792,6 +792,9 @@ SrsRtspSetupResponse::SrsRtspSetupResponse(int seq) : SrsRtspResponse(seq)
|
|||
{
|
||||
local_port_min = 0;
|
||||
local_port_max = 0;
|
||||
|
||||
client_port_min = 0;
|
||||
client_port_max = 0;
|
||||
}
|
||||
|
||||
SrsRtspSetupResponse::~SrsRtspSetupResponse()
|
||||
|
|
|
@ -319,6 +319,7 @@ SrsHttpMessage::SrsHttpMessage(ISrsReader* reader, SrsFastStream* buffer) : ISrs
|
|||
_content_length = -1;
|
||||
// From HTTP/1.1, default to keep alive.
|
||||
_keep_alive = true;
|
||||
type_ = 0;
|
||||
}
|
||||
|
||||
SrsHttpMessage::~SrsHttpMessage()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue