mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Remove dead link for issues
This commit is contained in:
parent
2ac214fdc6
commit
19e857ada4
25 changed files with 1 additions and 70 deletions
|
@ -1,5 +1,4 @@
|
||||||
/*
|
/*
|
||||||
# see: https://github.com/ossrs/srs/issues/190
|
|
||||||
# see: https://github.com/ossrs/srs/wiki/v1_CN_SrsLinuxArm
|
# see: https://github.com/ossrs/srs/wiki/v1_CN_SrsLinuxArm
|
||||||
g++ -g -O0 -o jmp_sp jmp_sp.cpp
|
g++ -g -O0 -o jmp_sp jmp_sp.cpp
|
||||||
arm-linux-gnueabi-g++ -g -o jmp_sp jmp_sp.cpp -static
|
arm-linux-gnueabi-g++ -g -o jmp_sp jmp_sp.cpp -static
|
||||||
|
|
|
@ -746,7 +746,6 @@ public:
|
||||||
// all clients connected to edge must be tranverse to origin to verify.
|
// all clients connected to edge must be tranverse to origin to verify.
|
||||||
virtual bool get_vhost_edge_token_traverse(std::string vhost);
|
virtual bool get_vhost_edge_token_traverse(std::string vhost);
|
||||||
// Get the transformed vhost for edge,
|
// Get the transformed vhost for edge,
|
||||||
// @see https://github.com/ossrs/srs/issues/372
|
|
||||||
virtual std::string get_vhost_edge_transform_vhost(std::string vhost);
|
virtual std::string get_vhost_edge_transform_vhost(std::string vhost);
|
||||||
// Whether enable the origin cluster.
|
// Whether enable the origin cluster.
|
||||||
// @see https://github.com/ossrs/srs/wiki/v3_EN_OriginCluster
|
// @see https://github.com/ossrs/srs/wiki/v3_EN_OriginCluster
|
||||||
|
@ -921,7 +920,6 @@ public:
|
||||||
// Get the hls hls_on_error config.
|
// Get the hls hls_on_error config.
|
||||||
// The ignore will ignore error and disable hls.
|
// The ignore will ignore error and disable hls.
|
||||||
// The disconnect will disconnect publish connection.
|
// The disconnect will disconnect publish connection.
|
||||||
// @see https://github.com/ossrs/srs/issues/264
|
|
||||||
virtual std::string get_hls_on_error(std::string vhost);
|
virtual std::string get_hls_on_error(std::string vhost);
|
||||||
// Get the HLS default audio codec.
|
// Get the HLS default audio codec.
|
||||||
virtual std::string get_hls_acodec(std::string vhost);
|
virtual std::string get_hls_acodec(std::string vhost);
|
||||||
|
|
|
@ -66,7 +66,6 @@ srs_error_t SrsEdgeRtmpUpstream::connect(SrsRequest* r, SrsLbRoundRobin* lb)
|
||||||
if (true) {
|
if (true) {
|
||||||
SrsConfDirective* conf = _srs_config->get_vhost_edge_origin(req->vhost);
|
SrsConfDirective* conf = _srs_config->get_vhost_edge_origin(req->vhost);
|
||||||
|
|
||||||
// @see https://github.com/ossrs/srs/issues/79
|
|
||||||
// when origin is error, for instance, server is shutdown,
|
// when origin is error, for instance, server is shutdown,
|
||||||
// then user remove the vhost then reload, the conf is empty.
|
// then user remove the vhost then reload, the conf is empty.
|
||||||
if (!conf) {
|
if (!conf) {
|
||||||
|
@ -93,7 +92,6 @@ srs_error_t SrsEdgeRtmpUpstream::connect(SrsRequest* r, SrsLbRoundRobin* lb)
|
||||||
selected_port = port;
|
selected_port = port;
|
||||||
|
|
||||||
// support vhost tranform for edge,
|
// support vhost tranform for edge,
|
||||||
// @see https://github.com/ossrs/srs/issues/372
|
|
||||||
std::string vhost = _srs_config->get_vhost_edge_transform_vhost(req->vhost);
|
std::string vhost = _srs_config->get_vhost_edge_transform_vhost(req->vhost);
|
||||||
vhost = srs_string_replace(vhost, "[vhost]", req->vhost);
|
vhost = srs_string_replace(vhost, "[vhost]", req->vhost);
|
||||||
|
|
||||||
|
@ -478,7 +476,6 @@ srs_error_t SrsEdgeForwarder::start()
|
||||||
srs_parse_hostport(server, server, port);
|
srs_parse_hostport(server, server, port);
|
||||||
|
|
||||||
// support vhost tranform for edge,
|
// support vhost tranform for edge,
|
||||||
// @see https://github.com/ossrs/srs/issues/372
|
|
||||||
std::string vhost = _srs_config->get_vhost_edge_transform_vhost(req->vhost);
|
std::string vhost = _srs_config->get_vhost_edge_transform_vhost(req->vhost);
|
||||||
vhost = srs_string_replace(vhost, "[vhost]", req->vhost);
|
vhost = srs_string_replace(vhost, "[vhost]", req->vhost);
|
||||||
|
|
||||||
|
@ -759,7 +756,6 @@ srs_error_t SrsPublishEdge::on_client_publish()
|
||||||
return srs_error_new(ERROR_RTMP_EDGE_PUBLISH_STATE, "invalid state");
|
return srs_error_new(ERROR_RTMP_EDGE_PUBLISH_STATE, "invalid state");
|
||||||
}
|
}
|
||||||
|
|
||||||
// @see https://github.com/ossrs/srs/issues/180
|
|
||||||
// to avoid multiple publish the same stream on the same edge,
|
// to avoid multiple publish the same stream on the same edge,
|
||||||
// directly enter the publish stage.
|
// directly enter the publish stage.
|
||||||
if (true) {
|
if (true) {
|
||||||
|
@ -771,7 +767,6 @@ srs_error_t SrsPublishEdge::on_client_publish()
|
||||||
// start to forward stream to origin.
|
// start to forward stream to origin.
|
||||||
err = forwarder->start();
|
err = forwarder->start();
|
||||||
|
|
||||||
// @see https://github.com/ossrs/srs/issues/180
|
|
||||||
// when failed, revert to init
|
// when failed, revert to init
|
||||||
if (err != srs_success) {
|
if (err != srs_success) {
|
||||||
SrsEdgeState pstate = state;
|
SrsEdgeState pstate = state;
|
||||||
|
|
|
@ -40,7 +40,6 @@ private:
|
||||||
SrsRtmpJitter* jitter;
|
SrsRtmpJitter* jitter;
|
||||||
SrsMessageQueue* queue;
|
SrsMessageQueue* queue;
|
||||||
// Cache the sequence header for retry when slave is failed.
|
// Cache the sequence header for retry when slave is failed.
|
||||||
// @see https://github.com/ossrs/srs/issues/150
|
|
||||||
SrsSharedPtrMessage* sh_audio;
|
SrsSharedPtrMessage* sh_audio;
|
||||||
SrsSharedPtrMessage* sh_video;
|
SrsSharedPtrMessage* sh_video;
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -153,7 +153,6 @@ private:
|
||||||
// The current writing segment.
|
// The current writing segment.
|
||||||
SrsHlsSegment* current;
|
SrsHlsSegment* current;
|
||||||
// The ts context, to keep cc continous between ts.
|
// The ts context, to keep cc continous between ts.
|
||||||
// @see https://github.com/ossrs/srs/issues/375
|
|
||||||
SrsTsContext* context;
|
SrsTsContext* context;
|
||||||
public:
|
public:
|
||||||
SrsHlsMuxer();
|
SrsHlsMuxer();
|
||||||
|
@ -187,7 +186,6 @@ public:
|
||||||
virtual bool wait_keyframe();
|
virtual bool wait_keyframe();
|
||||||
// Whether segment absolutely overflow, for pure audio to reap segment,
|
// Whether segment absolutely overflow, for pure audio to reap segment,
|
||||||
// that is whether the current segment duration>=2*(the segment in config)
|
// that is whether the current segment duration>=2*(the segment in config)
|
||||||
// @see https://github.com/ossrs/srs/issues/151#issuecomment-71155184
|
|
||||||
virtual bool is_segment_absolutely_overflow();
|
virtual bool is_segment_absolutely_overflow();
|
||||||
public:
|
public:
|
||||||
// Whether current hls muxer is pure audio mode.
|
// Whether current hls muxer is pure audio mode.
|
||||||
|
|
|
@ -509,7 +509,6 @@ srs_error_t SrsHttpHooks::do_post(SrsHttpClient* hc, std::string url, std::strin
|
||||||
}
|
}
|
||||||
|
|
||||||
// ensure the http status is ok.
|
// ensure the http status is ok.
|
||||||
// https://github.com/ossrs/srs/issues/158
|
|
||||||
if (code != SRS_CONSTS_HTTP_OK && code != SRS_CONSTS_HTTP_Created) {
|
if (code != SRS_CONSTS_HTTP_OK && code != SRS_CONSTS_HTTP_Created) {
|
||||||
return srs_error_new(ERROR_HTTP_STATUS_INVALID, "http: status %d", code);
|
return srs_error_new(ERROR_HTTP_STATUS_INVALID, "http: status %d", code);
|
||||||
}
|
}
|
||||||
|
|
|
@ -928,7 +928,6 @@ srs_error_t SrsHttpStreamServer::http_mount(SrsLiveSource* s, SrsRequest* r)
|
||||||
// mount the http flv stream.
|
// mount the http flv stream.
|
||||||
// we must register the handler, then start the thread,
|
// we must register the handler, then start the thread,
|
||||||
// for the thread will cause thread switch context.
|
// for the thread will cause thread switch context.
|
||||||
// @see https://github.com/ossrs/srs/issues/404
|
|
||||||
if ((err = mux.handle(mount, entry->stream)) != srs_success) {
|
if ((err = mux.handle(mount, entry->stream)) != srs_success) {
|
||||||
return srs_error_wrap(err, "http: mount flv stream for vhost=%s failed", sid.c_str());
|
return srs_error_wrap(err, "http: mount flv stream for vhost=%s failed", sid.c_str());
|
||||||
}
|
}
|
||||||
|
|
|
@ -449,7 +449,6 @@ srs_error_t SrsMpegtsOverUdp::write_h264_ipb_frame(char* frame, int frame_size,
|
||||||
srs_error_t err = srs_success;
|
srs_error_t err = srs_success;
|
||||||
|
|
||||||
// when sps or pps not sent, ignore the packet.
|
// when sps or pps not sent, ignore the packet.
|
||||||
// @see https://github.com/ossrs/srs/issues/203
|
|
||||||
if (!h264_sps_pps_sent) {
|
if (!h264_sps_pps_sent) {
|
||||||
return srs_error_new(ERROR_H264_DROP_BEFORE_SPS_PPS, "drop sps/pps");
|
return srs_error_new(ERROR_H264_DROP_BEFORE_SPS_PPS, "drop sps/pps");
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,8 +93,6 @@ srs_error_t SrsRecvThread::cycle()
|
||||||
// the multiple messages writev improve performance large,
|
// the multiple messages writev improve performance large,
|
||||||
// but the timeout recv will cause 33% sys call performance,
|
// but the timeout recv will cause 33% sys call performance,
|
||||||
// to use isolate thread to recv, can improve about 33% performance.
|
// to use isolate thread to recv, can improve about 33% performance.
|
||||||
// @see https://github.com/ossrs/srs/issues/194
|
|
||||||
// @see: https://github.com/ossrs/srs/issues/217
|
|
||||||
rtmp->set_recv_timeout(SRS_UTIME_NO_TIMEOUT);
|
rtmp->set_recv_timeout(SRS_UTIME_NO_TIMEOUT);
|
||||||
|
|
||||||
pumper->on_start();
|
pumper->on_start();
|
||||||
|
@ -279,7 +277,6 @@ SrsPublishRecvThread::SrsPublishRecvThread(SrsRtmpServer* rtmp_sdk, SrsRequest*
|
||||||
mr_fd = mr_sock_fd;
|
mr_fd = mr_sock_fd;
|
||||||
|
|
||||||
// the mr settings,
|
// the mr settings,
|
||||||
// @see https://github.com/ossrs/srs/issues/241
|
|
||||||
mr = _srs_config->get_mr_enabled(req->vhost);
|
mr = _srs_config->get_mr_enabled(req->vhost);
|
||||||
mr_sleep = _srs_config->get_mr_sleep(req->vhost);
|
mr_sleep = _srs_config->get_mr_sleep(req->vhost);
|
||||||
|
|
||||||
|
@ -405,7 +402,6 @@ void SrsPublishRecvThread::interrupt(srs_error_t err)
|
||||||
recv_error = srs_error_copy(err);
|
recv_error = srs_error_copy(err);
|
||||||
|
|
||||||
// when recv thread error, signal the conn thread to process it.
|
// when recv thread error, signal the conn thread to process it.
|
||||||
// @see https://github.com/ossrs/srs/issues/244
|
|
||||||
srs_cond_signal(error);
|
srs_cond_signal(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -420,7 +416,6 @@ void SrsPublishRecvThread::on_start()
|
||||||
set_socket_buffer(mr_sleep);
|
set_socket_buffer(mr_sleep);
|
||||||
|
|
||||||
// disable the merge read
|
// disable the merge read
|
||||||
// @see https://github.com/ossrs/srs/issues/241
|
|
||||||
rtmp->set_merge_read(true, this);
|
rtmp->set_merge_read(true, this);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -432,13 +427,11 @@ void SrsPublishRecvThread::on_stop()
|
||||||
// for we donot set to false yet.
|
// for we donot set to false yet.
|
||||||
|
|
||||||
// when thread stop, signal the conn thread which wait.
|
// when thread stop, signal the conn thread which wait.
|
||||||
// @see https://github.com/ossrs/srs/issues/244
|
|
||||||
srs_cond_signal(error);
|
srs_cond_signal(error);
|
||||||
|
|
||||||
#ifdef SRS_PERF_MERGED_READ
|
#ifdef SRS_PERF_MERGED_READ
|
||||||
if (mr) {
|
if (mr) {
|
||||||
// disable the merge read
|
// disable the merge read
|
||||||
// @see https://github.com/ossrs/srs/issues/241
|
|
||||||
rtmp->set_merge_read(false, NULL);
|
rtmp->set_merge_read(false, NULL);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -459,7 +452,6 @@ void SrsPublishRecvThread::on_read(ssize_t nread)
|
||||||
* to improve read performance, merge some packets then read,
|
* to improve read performance, merge some packets then read,
|
||||||
* when it on and read small bytes, we sleep to wait more data.,
|
* when it on and read small bytes, we sleep to wait more data.,
|
||||||
* that is, we merge some data to read together.
|
* that is, we merge some data to read together.
|
||||||
* @see https://github.com/ossrs/srs/issues/241
|
|
||||||
*/
|
*/
|
||||||
if (nread < SRS_MR_SMALL_BYTES) {
|
if (nread < SRS_MR_SMALL_BYTES) {
|
||||||
srs_usleep(mr_sleep);
|
srs_usleep(mr_sleep);
|
||||||
|
@ -476,7 +468,6 @@ srs_error_t SrsPublishRecvThread::on_reload_vhost_publish(string vhost)
|
||||||
}
|
}
|
||||||
|
|
||||||
// the mr settings,
|
// the mr settings,
|
||||||
// @see https://github.com/ossrs/srs/issues/241
|
|
||||||
bool mr_enabled = _srs_config->get_mr_enabled(req->vhost);
|
bool mr_enabled = _srs_config->get_mr_enabled(req->vhost);
|
||||||
srs_utime_t sleep_v = _srs_config->get_mr_sleep(req->vhost);
|
srs_utime_t sleep_v = _srs_config->get_mr_sleep(req->vhost);
|
||||||
|
|
||||||
|
@ -489,13 +480,11 @@ srs_error_t SrsPublishRecvThread::on_reload_vhost_publish(string vhost)
|
||||||
// mr enabled=>disabled
|
// mr enabled=>disabled
|
||||||
if (mr && !mr_enabled) {
|
if (mr && !mr_enabled) {
|
||||||
// disable the merge read
|
// disable the merge read
|
||||||
// @see https://github.com/ossrs/srs/issues/241
|
|
||||||
rtmp->set_merge_read(false, NULL);
|
rtmp->set_merge_read(false, NULL);
|
||||||
}
|
}
|
||||||
// mr disabled=>enabled
|
// mr disabled=>enabled
|
||||||
if (!mr && mr_enabled) {
|
if (!mr && mr_enabled) {
|
||||||
// enable the merge read
|
// enable the merge read
|
||||||
// @see https://github.com/ossrs/srs/issues/241
|
|
||||||
rtmp->set_merge_read(true, this);
|
rtmp->set_merge_read(true, this);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -75,7 +75,6 @@ private:
|
||||||
// when source id changed, notice all consumers
|
// when source id changed, notice all consumers
|
||||||
bool should_update_source_id;
|
bool should_update_source_id;
|
||||||
// The cond wait for mw.
|
// The cond wait for mw.
|
||||||
// @see https://github.com/ossrs/srs/issues/251
|
|
||||||
srs_cond_t mw_wait;
|
srs_cond_t mw_wait;
|
||||||
bool mw_waiting;
|
bool mw_waiting;
|
||||||
int mw_min_msgs;
|
int mw_min_msgs;
|
||||||
|
|
|
@ -429,7 +429,6 @@ srs_error_t SrsRtmpConn::service_cycle()
|
||||||
// logical accept and retry stream service.
|
// logical accept and retry stream service.
|
||||||
if (srs_error_code(err) == ERROR_CONTROL_RTMP_CLOSE) {
|
if (srs_error_code(err) == ERROR_CONTROL_RTMP_CLOSE) {
|
||||||
// TODO: FIXME: use ping message to anti-death of socket.
|
// TODO: FIXME: use ping message to anti-death of socket.
|
||||||
// @see: https://github.com/ossrs/srs/issues/39
|
|
||||||
// set timeout to a larger value, for user paused.
|
// set timeout to a larger value, for user paused.
|
||||||
rtmp->set_recv_timeout(SRS_PAUSED_RECV_TIMEOUT);
|
rtmp->set_recv_timeout(SRS_PAUSED_RECV_TIMEOUT);
|
||||||
rtmp->set_send_timeout(SRS_PAUSED_SEND_TIMEOUT);
|
rtmp->set_send_timeout(SRS_PAUSED_SEND_TIMEOUT);
|
||||||
|
@ -670,7 +669,6 @@ srs_error_t SrsRtmpConn::playing(SrsLiveSource* source)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use receiving thread to receive packets from peer.
|
// Use receiving thread to receive packets from peer.
|
||||||
// @see: https://github.com/ossrs/srs/issues/217
|
|
||||||
SrsQueueRecvThread trd(consumer, rtmp, SRS_PERF_MW_SLEEP, _srs_context->get_id());
|
SrsQueueRecvThread trd(consumer, rtmp, SRS_PERF_MW_SLEEP, _srs_context->get_id());
|
||||||
|
|
||||||
if ((err = trd.start()) != srs_success) {
|
if ((err = trd.start()) != srs_success) {
|
||||||
|
@ -731,8 +729,6 @@ srs_error_t SrsRtmpConn::do_playing(SrsLiveSource* source, SrsLiveConsumer* cons
|
||||||
pprint->elapse();
|
pprint->elapse();
|
||||||
|
|
||||||
// to use isolate thread to recv, can improve about 33% performance.
|
// to use isolate thread to recv, can improve about 33% performance.
|
||||||
// @see: https://github.com/ossrs/srs/issues/196
|
|
||||||
// @see: https://github.com/ossrs/srs/issues/217
|
|
||||||
while (!rtrd->empty()) {
|
while (!rtrd->empty()) {
|
||||||
SrsCommonMessage* msg = rtrd->pump();
|
SrsCommonMessage* msg = rtrd->pump();
|
||||||
if ((err = process_play_control_msg(consumer, msg)) != srs_success) {
|
if ((err = process_play_control_msg(consumer, msg)) != srs_success) {
|
||||||
|
@ -1114,7 +1110,6 @@ srs_error_t SrsRtmpConn::process_play_control_msg(SrsLiveConsumer* consumer, Srs
|
||||||
SrsAutoFree(SrsPacket, pkt);
|
SrsAutoFree(SrsPacket, pkt);
|
||||||
|
|
||||||
// for jwplayer/flowplayer, which send close as pause message.
|
// for jwplayer/flowplayer, which send close as pause message.
|
||||||
// @see https://github.com/ossrs/srs/issues/6
|
|
||||||
SrsCloseStreamPacket* close = dynamic_cast<SrsCloseStreamPacket*>(pkt);
|
SrsCloseStreamPacket* close = dynamic_cast<SrsCloseStreamPacket*>(pkt);
|
||||||
if (close) {
|
if (close) {
|
||||||
return srs_error_new(ERROR_CONTROL_RTMP_CLOSE, "rtmp: close stream");
|
return srs_error_new(ERROR_CONTROL_RTMP_CLOSE, "rtmp: close stream");
|
||||||
|
@ -1122,7 +1117,6 @@ srs_error_t SrsRtmpConn::process_play_control_msg(SrsLiveConsumer* consumer, Srs
|
||||||
|
|
||||||
// call msg,
|
// call msg,
|
||||||
// support response null first,
|
// support response null first,
|
||||||
// @see https://github.com/ossrs/srs/issues/106
|
|
||||||
// TODO: FIXME: response in right way, or forward in edge mode.
|
// TODO: FIXME: response in right way, or forward in edge mode.
|
||||||
SrsCallPacket* call = dynamic_cast<SrsCallPacket*>(pkt);
|
SrsCallPacket* call = dynamic_cast<SrsCallPacket*>(pkt);
|
||||||
if (call) {
|
if (call) {
|
||||||
|
|
|
@ -82,7 +82,6 @@ private:
|
||||||
ISrsWakable* wakable;
|
ISrsWakable* wakable;
|
||||||
// The elapsed duration in srs_utime_t
|
// The elapsed duration in srs_utime_t
|
||||||
// For live play duration, for instance, rtmpdump to record.
|
// For live play duration, for instance, rtmpdump to record.
|
||||||
// @see https://github.com/ossrs/srs/issues/47
|
|
||||||
srs_utime_t duration;
|
srs_utime_t duration;
|
||||||
// The MR(merged-write) sleep time in srs_utime_t.
|
// The MR(merged-write) sleep time in srs_utime_t.
|
||||||
srs_utime_t mw_sleep;
|
srs_utime_t mw_sleep;
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
class SrsConfDirective;
|
class SrsConfDirective;
|
||||||
|
|
||||||
// The security apply on vhost.
|
// The security apply on vhost.
|
||||||
// @see https://github.com/ossrs/srs/issues/211
|
|
||||||
class SrsSecurity
|
class SrsSecurity
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
|
|
||||||
#include <srs_kernel_mp3.hpp>
|
#include <srs_kernel_mp3.hpp>
|
||||||
|
|
||||||
// for srs-librtmp, @see https://github.com/ossrs/srs/issues/213
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
|
|
||||||
#include <srs_kernel_utility.hpp>
|
#include <srs_kernel_utility.hpp>
|
||||||
|
|
||||||
// for srs-librtmp, @see https://github.com/ossrs/srs/issues/213
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
|
@ -120,7 +119,6 @@ srs_utime_t srs_update_system_time()
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// @see: https://github.com/ossrs/srs/issues/35
|
|
||||||
// we must convert the tv_sec/tv_usec to int64_t.
|
// we must convert the tv_sec/tv_usec to int64_t.
|
||||||
int64_t now_us = ((int64_t)now.tv_sec) * 1000 * 1000 + (int64_t)now.tv_usec;
|
int64_t now_us = ((int64_t)now.tv_sec) * 1000 * 1000 + (int64_t)now.tv_usec;
|
||||||
|
|
||||||
|
@ -140,7 +138,6 @@ srs_utime_t srs_update_system_time()
|
||||||
diff = srs_max(0, diff);
|
diff = srs_max(0, diff);
|
||||||
if (diff < 0 || diff > 1000 * SYS_TIME_RESOLUTION_US) {
|
if (diff < 0 || diff > 1000 * SYS_TIME_RESOLUTION_US) {
|
||||||
srs_warn("clock jump, history=%" PRId64 "us, now=%" PRId64 "us, diff=%" PRId64 "us", _srs_system_time_us_cache, now_us, diff);
|
srs_warn("clock jump, history=%" PRId64 "us, now=%" PRId64 "us, diff=%" PRId64 "us", _srs_system_time_us_cache, now_us, diff);
|
||||||
// @see: https://github.com/ossrs/srs/issues/109
|
|
||||||
_srs_system_time_startup_time += diff;
|
_srs_system_time_startup_time += diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -580,7 +577,6 @@ int srs_do_create_dir_recursively(string dir)
|
||||||
}
|
}
|
||||||
|
|
||||||
// create curren dir.
|
// create curren dir.
|
||||||
// for srs-librtmp, @see https://github.com/ossrs/srs/issues/213
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
if (::_mkdir(dir.c_str()) < 0) {
|
if (::_mkdir(dir.c_str()) < 0) {
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -167,7 +167,6 @@ srs_error_t SrsFastStream::grow(ISrsReader* reader, int required_size)
|
||||||
* to improve read performance, merge some packets then read,
|
* to improve read performance, merge some packets then read,
|
||||||
* when it on and read small bytes, we sleep to wait more data.,
|
* when it on and read small bytes, we sleep to wait more data.,
|
||||||
* that is, we merge some data to read together.
|
* that is, we merge some data to read together.
|
||||||
* @see https://github.com/ossrs/srs/issues/241
|
|
||||||
*/
|
*/
|
||||||
if (merged_read && _handler) {
|
if (merged_read && _handler) {
|
||||||
_handler->on_read(nread);
|
_handler->on_read(nread);
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
|
|
||||||
#include <srs_protocol_utility.hpp>
|
#include <srs_protocol_utility.hpp>
|
||||||
|
|
||||||
// for srs-librtmp, @see https://github.com/ossrs/srs/issues/213
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -345,7 +344,6 @@ srs_error_t srs_write_large_iovs(ISrsProtocolReadWriter* skt, iovec* iovs, int s
|
||||||
srs_error_t err = srs_success;
|
srs_error_t err = srs_success;
|
||||||
|
|
||||||
// the limits of writev iovs.
|
// the limits of writev iovs.
|
||||||
// for srs-librtmp, @see https://github.com/ossrs/srs/issues/213
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
// for linux, generally it's 1024.
|
// for linux, generally it's 1024.
|
||||||
static int limits = (int)sysconf(_SC_IOV_MAX);
|
static int limits = (int)sysconf(_SC_IOV_MAX);
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
|
|
||||||
#include <srs_core.hpp>
|
#include <srs_core.hpp>
|
||||||
|
|
||||||
// for srs-librtmp, @see https://github.com/ossrs/srs/issues/213
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#include <sys/uio.h>
|
#include <sys/uio.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -281,7 +281,6 @@ srs_error_t SrsRawAacStream::adts_demux(SrsBuffer* stream, char** pframe, int* p
|
||||||
// decode the ADTS.
|
// decode the ADTS.
|
||||||
// @see ISO_IEC_13818-7-AAC-2004.pdf, page 26
|
// @see ISO_IEC_13818-7-AAC-2004.pdf, page 26
|
||||||
// 6.2 Audio Data Transport Stream, ADTS
|
// 6.2 Audio Data Transport Stream, ADTS
|
||||||
// @see https://github.com/ossrs/srs/issues/212#issuecomment-64145885
|
|
||||||
// byte_alignment()
|
// byte_alignment()
|
||||||
|
|
||||||
// adts_fixed_header:
|
// adts_fixed_header:
|
||||||
|
@ -342,7 +341,7 @@ srs_error_t SrsRawAacStream::adts_demux(SrsBuffer* stream, char** pframe, int* p
|
||||||
int8_t channel_configuration = (sfiv >> 6) & 0x07;
|
int8_t channel_configuration = (sfiv >> 6) & 0x07;
|
||||||
/*int8_t original = (sfiv >> 5) & 0x01;*/
|
/*int8_t original = (sfiv >> 5) & 0x01;*/
|
||||||
/*int8_t home = (sfiv >> 4) & 0x01;*/
|
/*int8_t home = (sfiv >> 4) & 0x01;*/
|
||||||
//int8_t Emphasis; @remark, Emphasis is removed, @see https://github.com/ossrs/srs/issues/212#issuecomment-64154736
|
//int8_t Emphasis; @remark, Emphasis is removed
|
||||||
// 4bits left.
|
// 4bits left.
|
||||||
// adts_variable_header(), 1.A.2.2.2 Variable Header of ADTS
|
// adts_variable_header(), 1.A.2.2.2 Variable Header of ADTS
|
||||||
// copyright_identification_bit 1 bslbf
|
// copyright_identification_bit 1 bslbf
|
||||||
|
|
|
@ -571,7 +571,6 @@ namespace srs_internal
|
||||||
}
|
}
|
||||||
|
|
||||||
// directly generate the public key.
|
// directly generate the public key.
|
||||||
// @see: https://github.com/ossrs/srs/issues/148
|
|
||||||
int pkey_size = 128;
|
int pkey_size = 128;
|
||||||
if ((err = dh.copy_shared_key(c1->get_key(), 128, key.key, pkey_size)) != srs_success) {
|
if ((err = dh.copy_shared_key(c1->get_key(), 128, key.key, pkey_size)) != srs_success) {
|
||||||
return srs_error_wrap(err, "copy shared key");
|
return srs_error_wrap(err, "copy shared key");
|
||||||
|
|
|
@ -1036,7 +1036,6 @@ srs_error_t SrsProtocol::read_message_header(SrsChunkStream* chunk, char fmt)
|
||||||
// 0x04 where: message_type=4(protocol control user-control message)
|
// 0x04 where: message_type=4(protocol control user-control message)
|
||||||
// 0x00 0x06 where: event Ping(0x06)
|
// 0x00 0x06 where: event Ping(0x06)
|
||||||
// 0x00 0x00 0x0d 0x0f where: event data 4bytes ping timestamp.
|
// 0x00 0x00 0x0d 0x0f where: event data 4bytes ping timestamp.
|
||||||
// @see: https://github.com/ossrs/srs/issues/98
|
|
||||||
if (fmt == RTMP_FMT_TYPE1) {
|
if (fmt == RTMP_FMT_TYPE1) {
|
||||||
srs_warn("fresh chunk starts with fmt=1");
|
srs_warn("fresh chunk starts with fmt=1");
|
||||||
} else {
|
} else {
|
||||||
|
@ -1175,7 +1174,6 @@ srs_error_t SrsProtocol::read_message_header(SrsChunkStream* chunk, char fmt)
|
||||||
pp[0] = *p++;
|
pp[0] = *p++;
|
||||||
|
|
||||||
// always use 31bits timestamp, for some server may use 32bits extended timestamp.
|
// always use 31bits timestamp, for some server may use 32bits extended timestamp.
|
||||||
// @see https://github.com/ossrs/srs/issues/111
|
|
||||||
timestamp &= 0x7fffffff;
|
timestamp &= 0x7fffffff;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
// For srs-librtmp, @see https://github.com/ossrs/srs/issues/213
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#include <sys/uio.h>
|
#include <sys/uio.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -161,7 +160,6 @@ private:
|
||||||
std::map<int, SrsChunkStream*> chunk_streams;
|
std::map<int, SrsChunkStream*> chunk_streams;
|
||||||
// Cache some frequently used chunk header.
|
// Cache some frequently used chunk header.
|
||||||
// cs_cache, the chunk stream cache.
|
// cs_cache, the chunk stream cache.
|
||||||
// @see https://github.com/ossrs/srs/issues/249
|
|
||||||
SrsChunkStream** cs_cache;
|
SrsChunkStream** cs_cache;
|
||||||
// The bytes buffer cache, recv from skt, provide services for stream.
|
// The bytes buffer cache, recv from skt, provide services for stream.
|
||||||
SrsFastStream* in_buffer;
|
SrsFastStream* in_buffer;
|
||||||
|
@ -179,7 +177,6 @@ private:
|
||||||
bool show_debug_info;
|
bool show_debug_info;
|
||||||
// Whether auto response when recv messages.
|
// Whether auto response when recv messages.
|
||||||
// default to true for it's very easy to use the protocol stack.
|
// default to true for it's very easy to use the protocol stack.
|
||||||
// @see: https://github.com/ossrs/srs/issues/217
|
|
||||||
bool auto_response_when_recv;
|
bool auto_response_when_recv;
|
||||||
// When not auto response message, manual flush the messages in queue.
|
// When not auto response message, manual flush the messages in queue.
|
||||||
std::vector<SrsPacket*> manual_response_queue;
|
std::vector<SrsPacket*> manual_response_queue;
|
||||||
|
@ -208,7 +205,6 @@ public:
|
||||||
public:
|
public:
|
||||||
// Set the auto response message when recv for protocol stack.
|
// Set the auto response message when recv for protocol stack.
|
||||||
// @param v, whether auto response message when recv message.
|
// @param v, whether auto response message when recv message.
|
||||||
// @see: https://github.com/ossrs/srs/issues/217
|
|
||||||
virtual void set_auto_response(bool v);
|
virtual void set_auto_response(bool v);
|
||||||
// Flush for manual response when the auto response is disabled
|
// Flush for manual response when the auto response is disabled
|
||||||
// by set_auto_response(false), we default use auto response, so donot
|
// by set_auto_response(false), we default use auto response, so donot
|
||||||
|
@ -222,13 +218,11 @@ public:
|
||||||
// that is, we merge some data to read together.
|
// that is, we merge some data to read together.
|
||||||
// @param v true to ename merged read.
|
// @param v true to ename merged read.
|
||||||
// @param handler the handler when merge read is enabled.
|
// @param handler the handler when merge read is enabled.
|
||||||
// @see https://github.com/ossrs/srs/issues/241
|
|
||||||
virtual void set_merge_read(bool v, IMergeReadHandler* handler);
|
virtual void set_merge_read(bool v, IMergeReadHandler* handler);
|
||||||
// Create buffer with specifeid size.
|
// Create buffer with specifeid size.
|
||||||
// @param buffer the size of buffer.
|
// @param buffer the size of buffer.
|
||||||
// @remark when MR(SRS_PERF_MERGED_READ) disabled, always set to 8K.
|
// @remark when MR(SRS_PERF_MERGED_READ) disabled, always set to 8K.
|
||||||
// @remark when buffer changed, the previous ptr maybe invalid.
|
// @remark when buffer changed, the previous ptr maybe invalid.
|
||||||
// @see https://github.com/ossrs/srs/issues/241
|
|
||||||
virtual void set_recv_buffer(int buffer_size);
|
virtual void set_recv_buffer(int buffer_size);
|
||||||
#endif
|
#endif
|
||||||
public:
|
public:
|
||||||
|
@ -429,7 +423,6 @@ public:
|
||||||
std::string stream;
|
std::string stream;
|
||||||
// For play live stream,
|
// For play live stream,
|
||||||
// used to specified the stop when exceed the duration.
|
// used to specified the stop when exceed the duration.
|
||||||
// @see https://github.com/ossrs/srs/issues/45
|
|
||||||
// in srs_utime_t.
|
// in srs_utime_t.
|
||||||
srs_utime_t duration;
|
srs_utime_t duration;
|
||||||
// The token in the connect request,
|
// The token in the connect request,
|
||||||
|
@ -614,7 +607,6 @@ public:
|
||||||
public:
|
public:
|
||||||
// Set the auto response message when recv for protocol stack.
|
// Set the auto response message when recv for protocol stack.
|
||||||
// @param v, whether auto response message when recv message.
|
// @param v, whether auto response message when recv message.
|
||||||
// @see: https://github.com/ossrs/srs/issues/217
|
|
||||||
virtual void set_auto_response(bool v);
|
virtual void set_auto_response(bool v);
|
||||||
#ifdef SRS_PERF_MERGED_READ
|
#ifdef SRS_PERF_MERGED_READ
|
||||||
// To improve read performance, merge some packets then read,
|
// To improve read performance, merge some packets then read,
|
||||||
|
@ -622,13 +614,11 @@ public:
|
||||||
// that is, we merge some data to read together.
|
// that is, we merge some data to read together.
|
||||||
// @param v true to ename merged read.
|
// @param v true to ename merged read.
|
||||||
// @param handler the handler when merge read is enabled.
|
// @param handler the handler when merge read is enabled.
|
||||||
// @see https://github.com/ossrs/srs/issues/241
|
|
||||||
virtual void set_merge_read(bool v, IMergeReadHandler* handler);
|
virtual void set_merge_read(bool v, IMergeReadHandler* handler);
|
||||||
// Create buffer with specifeid size.
|
// Create buffer with specifeid size.
|
||||||
// @param buffer the size of buffer.
|
// @param buffer the size of buffer.
|
||||||
// @remark when MR(SRS_PERF_MERGED_READ) disabled, always set to 8K.
|
// @remark when MR(SRS_PERF_MERGED_READ) disabled, always set to 8K.
|
||||||
// @remark when buffer changed, the previous ptr maybe invalid.
|
// @remark when buffer changed, the previous ptr maybe invalid.
|
||||||
// @see https://github.com/ossrs/srs/issues/241
|
|
||||||
virtual void set_recv_buffer(int buffer_size);
|
virtual void set_recv_buffer(int buffer_size);
|
||||||
#endif
|
#endif
|
||||||
// To set/get the recv timeout in srs_utime_t.
|
// To set/get the recv timeout in srs_utime_t.
|
||||||
|
@ -669,7 +659,6 @@ public:
|
||||||
// @param stream_id, the stream id of packet to send over, 0 for control message.
|
// @param stream_id, the stream id of packet to send over, 0 for control message.
|
||||||
//
|
//
|
||||||
// @remark performance issue, to support 6k+ 250kbps client,
|
// @remark performance issue, to support 6k+ 250kbps client,
|
||||||
// @see https://github.com/ossrs/srs/issues/194
|
|
||||||
virtual srs_error_t send_and_free_messages(SrsSharedPtrMessage** msgs, int nb_msgs, int stream_id);
|
virtual srs_error_t send_and_free_messages(SrsSharedPtrMessage** msgs, int nb_msgs, int stream_id);
|
||||||
// Send the RTMP packet and always free it.
|
// Send the RTMP packet and always free it.
|
||||||
// user must never free or use the packet after this method,
|
// user must never free or use the packet after this method,
|
||||||
|
@ -1330,11 +1319,9 @@ public:
|
||||||
// Name of command. Set to "|RtmpSampleAccess".
|
// Name of command. Set to "|RtmpSampleAccess".
|
||||||
std::string command_name;
|
std::string command_name;
|
||||||
// Whether allow access the sample of video.
|
// Whether allow access the sample of video.
|
||||||
// @see: https://github.com/ossrs/srs/issues/49
|
|
||||||
// @see: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html#videoSampleAccess
|
// @see: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html#videoSampleAccess
|
||||||
bool video_sample_access;
|
bool video_sample_access;
|
||||||
// Whether allow access the sample of audio.
|
// Whether allow access the sample of audio.
|
||||||
// @see: https://github.com/ossrs/srs/issues/49
|
|
||||||
// @see: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html#audioSampleAccess
|
// @see: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html#audioSampleAccess
|
||||||
bool audio_sample_access;
|
bool audio_sample_access;
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -97,7 +97,6 @@ srs_error_t SrsBasicRtmpClient::do_connect_app(string local_ip, bool debug)
|
||||||
}
|
}
|
||||||
|
|
||||||
// notify server the edge identity,
|
// notify server the edge identity,
|
||||||
// @see https://github.com/ossrs/srs/issues/147
|
|
||||||
SrsAmf0Object* data = req->args;
|
SrsAmf0Object* data = req->args;
|
||||||
data->set("srs_sig", SrsAmf0Any::str(RTMP_SIG_SRS_KEY));
|
data->set("srs_sig", SrsAmf0Any::str(RTMP_SIG_SRS_KEY));
|
||||||
data->set("srs_server", SrsAmf0Any::str(RTMP_SIG_SRS_SERVER));
|
data->set("srs_server", SrsAmf0Any::str(RTMP_SIG_SRS_SERVER));
|
||||||
|
@ -121,7 +120,6 @@ srs_error_t SrsBasicRtmpClient::do_connect_app(string local_ip, bool debug)
|
||||||
req->tcUrl = tc_url;
|
req->tcUrl = tc_url;
|
||||||
|
|
||||||
// upnode server identity will show in the connect_app of client.
|
// upnode server identity will show in the connect_app of client.
|
||||||
// @see https://github.com/ossrs/srs/issues/160
|
|
||||||
// the debug_srs_upnode is config in vhost and default to true.
|
// the debug_srs_upnode is config in vhost and default to true.
|
||||||
SrsServerInfo si;
|
SrsServerInfo si;
|
||||||
if ((err = client->connect_app(req->app, tc_url, req, debug, &si)) != srs_success) {
|
if ((err = client->connect_app(req->app, tc_url, req, debug, &si)) != srs_success) {
|
||||||
|
|
|
@ -41,7 +41,6 @@ srs_error_t srs_st_init()
|
||||||
{
|
{
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
// check epoll, some old linux donot support epoll.
|
// check epoll, some old linux donot support epoll.
|
||||||
// @see https://github.com/ossrs/srs/issues/162
|
|
||||||
if (!srs_st_epoll_is_supported()) {
|
if (!srs_st_epoll_is_supported()) {
|
||||||
return srs_error_new(ERROR_ST_SET_EPOLL, "linux epoll disabled");
|
return srs_error_new(ERROR_ST_SET_EPOLL, "linux epoll disabled");
|
||||||
}
|
}
|
||||||
|
@ -495,7 +494,6 @@ srs_error_t SrsStSocket::read(void* buf, size_t size, ssize_t* nread)
|
||||||
// (a value of 0 means the network connection is closed or end of file is reached).
|
// (a value of 0 means the network connection is closed or end of file is reached).
|
||||||
// Otherwise, a value of -1 is returned and errno is set to indicate the error.
|
// Otherwise, a value of -1 is returned and errno is set to indicate the error.
|
||||||
if (nb_read <= 0) {
|
if (nb_read <= 0) {
|
||||||
// @see https://github.com/ossrs/srs/issues/200
|
|
||||||
if (nb_read < 0 && errno == ETIME) {
|
if (nb_read < 0 && errno == ETIME) {
|
||||||
return srs_error_new(ERROR_SOCKET_TIMEOUT, "timeout %d ms", srsu2msi(rtm));
|
return srs_error_new(ERROR_SOCKET_TIMEOUT, "timeout %d ms", srsu2msi(rtm));
|
||||||
}
|
}
|
||||||
|
@ -531,7 +529,6 @@ srs_error_t SrsStSocket::read_fully(void* buf, size_t size, ssize_t* nread)
|
||||||
// (a value less than nbyte means the network connection is closed or end of file is reached)
|
// (a value less than nbyte means the network connection is closed or end of file is reached)
|
||||||
// Otherwise, a value of -1 is returned and errno is set to indicate the error.
|
// Otherwise, a value of -1 is returned and errno is set to indicate the error.
|
||||||
if (nb_read != (ssize_t)size) {
|
if (nb_read != (ssize_t)size) {
|
||||||
// @see https://github.com/ossrs/srs/issues/200
|
|
||||||
if (nb_read < 0 && errno == ETIME) {
|
if (nb_read < 0 && errno == ETIME) {
|
||||||
return srs_error_new(ERROR_SOCKET_TIMEOUT, "timeout %d ms", srsu2msi(rtm));
|
return srs_error_new(ERROR_SOCKET_TIMEOUT, "timeout %d ms", srsu2msi(rtm));
|
||||||
}
|
}
|
||||||
|
@ -566,7 +563,6 @@ srs_error_t SrsStSocket::write(void* buf, size_t size, ssize_t* nwrite)
|
||||||
// On success a non-negative integer equal to nbyte is returned.
|
// On success a non-negative integer equal to nbyte is returned.
|
||||||
// Otherwise, a value of -1 is returned and errno is set to indicate the error.
|
// Otherwise, a value of -1 is returned and errno is set to indicate the error.
|
||||||
if (nb_write <= 0) {
|
if (nb_write <= 0) {
|
||||||
// @see https://github.com/ossrs/srs/issues/200
|
|
||||||
if (nb_write < 0 && errno == ETIME) {
|
if (nb_write < 0 && errno == ETIME) {
|
||||||
return srs_error_new(ERROR_SOCKET_TIMEOUT, "write timeout %d ms", srsu2msi(stm));
|
return srs_error_new(ERROR_SOCKET_TIMEOUT, "write timeout %d ms", srsu2msi(stm));
|
||||||
}
|
}
|
||||||
|
@ -597,7 +593,6 @@ srs_error_t SrsStSocket::writev(const iovec *iov, int iov_size, ssize_t* nwrite)
|
||||||
// On success a non-negative integer equal to nbyte is returned.
|
// On success a non-negative integer equal to nbyte is returned.
|
||||||
// Otherwise, a value of -1 is returned and errno is set to indicate the error.
|
// Otherwise, a value of -1 is returned and errno is set to indicate the error.
|
||||||
if (nb_write <= 0) {
|
if (nb_write <= 0) {
|
||||||
// @see https://github.com/ossrs/srs/issues/200
|
|
||||||
if (nb_write < 0 && errno == ETIME) {
|
if (nb_write < 0 && errno == ETIME) {
|
||||||
return srs_error_new(ERROR_SOCKET_TIMEOUT, "writev timeout %d ms", srsu2msi(stm));
|
return srs_error_new(ERROR_SOCKET_TIMEOUT, "writev timeout %d ms", srsu2msi(stm));
|
||||||
}
|
}
|
||||||
|
|
|
@ -727,7 +727,6 @@ VOID TEST(ProtocolStackTest, ProtocolRecvMessage)
|
||||||
// 0x04 where: message_type=4(protocol control user-control message)
|
// 0x04 where: message_type=4(protocol control user-control message)
|
||||||
// 0x00 0x06 where: event Ping(0x06)
|
// 0x00 0x06 where: event Ping(0x06)
|
||||||
// 0x00 0x00 0x0d 0x0f where: event data 4bytes ping timestamp.
|
// 0x00 0x00 0x0d 0x0f where: event data 4bytes ping timestamp.
|
||||||
// @see: https://github.com/ossrs/srs/issues/98
|
|
||||||
VOID TEST(ProtocolStackTest, ProtocolRecvMessageBug98)
|
VOID TEST(ProtocolStackTest, ProtocolRecvMessageBug98)
|
||||||
{
|
{
|
||||||
MockBufferIO bio;
|
MockBufferIO bio;
|
||||||
|
@ -3824,7 +3823,6 @@ VOID TEST(ProtocolStackTest, ProtocolRecvExtTimeMessage2)
|
||||||
* always use 31bits timestamp.
|
* always use 31bits timestamp.
|
||||||
*/
|
*/
|
||||||
// always use 31bits timestamp, for some server may use 32bits extended timestamp.
|
// always use 31bits timestamp, for some server may use 32bits extended timestamp.
|
||||||
// @see https://github.com/ossrs/srs/issues/111
|
|
||||||
VOID TEST(ProtocolStackTest, ProtocolRecvExtTimeMessage3)
|
VOID TEST(ProtocolStackTest, ProtocolRecvExtTimeMessage3)
|
||||||
{
|
{
|
||||||
MockBufferIO bio;
|
MockBufferIO bio;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue