1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-13 11:51:57 +00:00

RTC: Refine cid for session

This commit is contained in:
winlin 2020-07-21 12:03:18 +08:00
parent c9c34b54a7
commit d2984ea49c
3 changed files with 13 additions and 13 deletions

View file

@ -1462,11 +1462,12 @@ void SrsRtcPublishStream::update_send_report_time(uint32_t ssrc, const SrsNtp& n
}
}
SrsRtcConnection::SrsRtcConnection(SrsRtcServer* s)
SrsRtcConnection::SrsRtcConnection(SrsRtcServer* s, SrsContextId context_id)
{
req = NULL;
is_publisher_ = false;
encrypt = true;
cid = context_id;
source_ = NULL;
publisher_ = NULL;
@ -1672,13 +1673,12 @@ srs_error_t SrsRtcConnection::add_player2(SrsRequest* req, SrsSdp& local_sdp)
return err;
}
srs_error_t SrsRtcConnection::initialize(SrsRtcStream* source, SrsRequest* r, bool is_publisher, string username, SrsContextId context_id)
srs_error_t SrsRtcConnection::initialize(SrsRtcStream* source, SrsRequest* r, bool is_publisher, string username)
{
srs_error_t err = srs_success;
username_ = username;
req = r->copy();
cid = context_id;
is_publisher_ = is_publisher;
source_ = source;

View file

@ -337,7 +337,7 @@ private:
// Simulators.
int nn_simulate_player_nack_drop;
public:
SrsRtcConnection(SrsRtcServer* s);
SrsRtcConnection(SrsRtcServer* s, SrsContextId context_id);
virtual ~SrsRtcConnection();
public:
// TODO: FIXME: save only connection info.
@ -360,7 +360,7 @@ public:
srs_error_t add_player2(SrsRequest* request, SrsSdp& local_sdp);
public:
// Before initialize, user must set the local SDP, which is used to inititlize DTLS.
srs_error_t initialize(SrsRtcStream* source, SrsRequest* r, bool is_publisher, std::string username, SrsContextId context_id);
srs_error_t initialize(SrsRtcStream* source, SrsRequest* r, bool is_publisher, std::string username);
// The peer address may change, we can identify that by STUN messages.
srs_error_t on_stun(SrsUdpMuxSocket* skt, SrsStunPacket* r);
srs_error_t on_dtls(char* data, int nb_data);

View file

@ -302,6 +302,8 @@ srs_error_t SrsRtcServer::create_session(
) {
srs_error_t err = srs_success;
SrsContextId cid = _srs_context->get_id();
SrsRtcStream* source = NULL;
if ((err = _srs_rtc_sources->fetch_or_create(req, &source)) != srs_success) {
return srs_error_wrap(err, "create source");
@ -313,7 +315,7 @@ srs_error_t SrsRtcServer::create_session(
}
// TODO: FIXME: add do_create_session to error process.
SrsRtcConnection* session = new SrsRtcConnection(this);
SrsRtcConnection* session = new SrsRtcConnection(this, cid);
if ((err = do_create_session(session, req, remote_sdp, local_sdp, mock_eip, publish, source)) != srs_success) {
srs_freep(session);
return srs_error_wrap(err, "create session");
@ -331,8 +333,6 @@ srs_error_t SrsRtcServer::do_create_session(
{
srs_error_t err = srs_success;
SrsContextId cid = _srs_context->get_id();
// first add publisher/player for negotiate sdp media info
if (publish) {
if ((err = session->add_publisher(req, remote_sdp, local_sdp)) != srs_success) {
@ -393,7 +393,7 @@ srs_error_t SrsRtcServer::do_create_session(
session->set_state(WAITING_STUN);
// Before session initialize, we must setup the local SDP.
if ((err = session->initialize(source, req, publish, username, cid)) != srs_success) {
if ((err = session->initialize(source, req, publish, username)) != srs_success) {
return srs_error_wrap(err, "init");
}
@ -405,11 +405,13 @@ srs_error_t SrsRtcServer::create_session2(SrsRequest* req, SrsSdp& local_sdp, co
{
srs_error_t err = srs_success;
SrsContextId cid = _srs_context->get_id();
std::string local_pwd = srs_random_str(32);
// TODO: FIXME: Collision detect.
std::string local_ufrag = srs_random_str(8);
SrsRtcConnection* session = new SrsRtcConnection(this);
SrsRtcConnection* session = new SrsRtcConnection(this, cid);
// first add player for negotiate local sdp media info
if ((err = session->add_player2(req, local_sdp)) != srs_success) {
srs_freep(session);
@ -445,8 +447,6 @@ srs_error_t SrsRtcServer::setup_session2(SrsRtcConnection* session, SrsRequest*
{
srs_error_t err = srs_success;
SrsContextId cid = _srs_context->get_id();
if (session->state() != WAITING_ANSWER) {
return err;
}
@ -459,7 +459,7 @@ srs_error_t SrsRtcServer::setup_session2(SrsRtcConnection* session, SrsRequest*
// TODO: FIXME: Collision detect.
string username = session->get_local_sdp()->get_ice_ufrag() + ":" + remote_sdp.get_ice_ufrag();
if ((err = session->initialize(source, req, false, username, cid)) != srs_success) {
if ((err = session->initialize(source, req, false, username)) != srs_success) {
return srs_error_wrap(err, "init");
}