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

for #742, fix publish recv thread bug.

This commit is contained in:
winlin 2017-01-23 16:44:42 +08:00
commit 39aee2b318
2 changed files with 9 additions and 2 deletions

View file

@ -305,7 +305,8 @@ SrsRtmpConn::SrsRtmpConn(SrsServer* svr, st_netfd_t c, string cip)
realtime = SRS_PERF_MIN_LATENCY_ENABLED; realtime = SRS_PERF_MIN_LATENCY_ENABLED;
send_min_interval = 0; send_min_interval = 0;
tcp_nodelay = false; tcp_nodelay = false;
client_type = SrsRtmpConnUnknown;
_srs_config->subscribe(this); _srs_config->subscribe(this);
} }
@ -709,6 +710,7 @@ int SrsRtmpConn::stream_service_cycle()
source->source_id(), source->source_id()); source->source_id(), source->source_id());
source->set_cache(enabled_cache); source->set_cache(enabled_cache);
client_type = type;
switch (type) { switch (type) {
case SrsRtmpConnPlay: { case SrsRtmpConnPlay: {
srs_verbose("start to play stream %s.", req->stream.c_str()); srs_verbose("start to play stream %s.", req->stream.c_str());
@ -1037,7 +1039,9 @@ int SrsRtmpConn::publishing(SrsSource* source)
// use isolate thread to recv, // use isolate thread to recv,
// @see: https://github.com/ossrs/srs/issues/237 // @see: https://github.com/ossrs/srs/issues/237
SrsPublishRecvThread trd(rtmp, req, SrsPublishRecvThread trd(rtmp, req,
st_netfd_fileno(stfd), 0, this, source, true, vhost_is_edge); st_netfd_fileno(stfd), 0, this, source,
client_type == SrsRtmpConnFMLEPublish,
vhost_is_edge);
srs_info("start to publish stream %s success", req->stream.c_str()); srs_info("start to publish stream %s success", req->stream.c_str());
ret = do_publishing(source, &trd); ret = do_publishing(source, &trd);

View file

@ -35,6 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_app_st.hpp> #include <srs_app_st.hpp>
#include <srs_app_conn.hpp> #include <srs_app_conn.hpp>
#include <srs_app_reload.hpp> #include <srs_app_reload.hpp>
#include <srs_rtmp_stack.hpp>
class SrsServer; class SrsServer;
class SrsRtmpServer; class SrsRtmpServer;
@ -150,6 +151,8 @@ private:
int publish_normal_timeout; int publish_normal_timeout;
// whether enable the tcp_nodelay. // whether enable the tcp_nodelay.
bool tcp_nodelay; bool tcp_nodelay;
// The type of client, play or publish.
SrsRtmpConnType client_type;
public: public:
SrsRtmpConn(SrsServer* svr, st_netfd_t c, std::string cip); SrsRtmpConn(SrsServer* svr, st_netfd_t c, std::string cip);
virtual ~SrsRtmpConn(); virtual ~SrsRtmpConn();