mirror of
https://github.com/ossrs/srs.git
synced 2025-02-13 11:51:57 +00:00
For #307, support mock server eip by API
This commit is contained in:
parent
b2f0696976
commit
574ae58adc
5 changed files with 20 additions and 9 deletions
|
@ -94,6 +94,8 @@
|
||||||
url += '&' + key + '=' + urlObject.user_query[key];
|
url += '&' + key + '=' + urlObject.user_query[key];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Replace /rtc/v1/play/&k=v to /rtc/v1/play/?k=v
|
||||||
|
url = url.replace(api + '&', api + '?');
|
||||||
|
|
||||||
// @see https://github.com/rtcdn/rtcdn-draft
|
// @see https://github.com/rtcdn/rtcdn-draft
|
||||||
var data = {
|
var data = {
|
||||||
|
|
|
@ -879,8 +879,11 @@ srs_error_t SrsGoApiRtcPlay::do_serve_http(ISrsHttpResponseWriter* w, ISrsHttpMe
|
||||||
srs_discovery_tc_url(tcUrl, schema, host, vhost, app, stream_name, port, param);
|
srs_discovery_tc_url(tcUrl, schema, host, vhost, app, stream_name, port, param);
|
||||||
}
|
}
|
||||||
|
|
||||||
srs_trace("RTC play %s, api=%s, clientip=%s, app=%s, stream=%s, offer=%dB",
|
// For client to specifies the EIP of server.
|
||||||
streamurl.c_str(), api.c_str(), clientip.c_str(), app.c_str(), stream_name.c_str(), remote_sdp_str.length());
|
string eip = r->query_get("eip");
|
||||||
|
|
||||||
|
srs_trace("RTC play %s, api=%s, clientip=%s, app=%s, stream=%s, offer=%dB, eip=%s",
|
||||||
|
streamurl.c_str(), api.c_str(), clientip.c_str(), app.c_str(), stream_name.c_str(), remote_sdp_str.length(), eip.c_str());
|
||||||
|
|
||||||
// TODO: FIXME: It seems remote_sdp doesn't represents the full SDP information.
|
// TODO: FIXME: It seems remote_sdp doesn't represents the full SDP information.
|
||||||
SrsSdp remote_sdp;
|
SrsSdp remote_sdp;
|
||||||
|
@ -903,7 +906,7 @@ srs_error_t SrsGoApiRtcPlay::do_serve_http(ISrsHttpResponseWriter* w, ISrsHttpMe
|
||||||
|
|
||||||
// TODO: FIXME: Maybe need a better name?
|
// TODO: FIXME: Maybe need a better name?
|
||||||
// TODO: FIXME: When server enabled, but vhost disabled, should report error.
|
// TODO: FIXME: When server enabled, but vhost disabled, should report error.
|
||||||
SrsRtcSession* rtc_session = rtc_server->create_rtc_session(request, remote_sdp, local_sdp);
|
SrsRtcSession* rtc_session = rtc_server->create_rtc_session(request, remote_sdp, local_sdp, eip);
|
||||||
|
|
||||||
ostringstream os;
|
ostringstream os;
|
||||||
if ((err = local_sdp.encode(os)) != srs_success) {
|
if ((err = local_sdp.encode(os)) != srs_success) {
|
||||||
|
|
|
@ -1152,7 +1152,7 @@ srs_error_t SrsRtcServer::listen_api()
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
SrsRtcSession* SrsRtcServer::create_rtc_session(const SrsRequest& req, const SrsSdp& remote_sdp, SrsSdp& local_sdp)
|
SrsRtcSession* SrsRtcServer::create_rtc_session(const SrsRequest& req, const SrsSdp& remote_sdp, SrsSdp& local_sdp, const string& mock_eip)
|
||||||
{
|
{
|
||||||
std::string local_pwd = gen_random_str(32);
|
std::string local_pwd = gen_random_str(32);
|
||||||
std::string local_ufrag = "";
|
std::string local_ufrag = "";
|
||||||
|
@ -1173,9 +1173,15 @@ SrsRtcSession* SrsRtcServer::create_rtc_session(const SrsRequest& req, const Srs
|
||||||
local_sdp.set_ice_pwd(local_pwd);
|
local_sdp.set_ice_pwd(local_pwd);
|
||||||
local_sdp.set_fingerprint_algo("sha-256");
|
local_sdp.set_fingerprint_algo("sha-256");
|
||||||
local_sdp.set_fingerprint(SrsDtls::instance()->get_fingerprint());
|
local_sdp.set_fingerprint(SrsDtls::instance()->get_fingerprint());
|
||||||
std::vector<string> candidate_ips = get_candidate_ips();
|
|
||||||
for (int i = 0; i < (int)candidate_ips.size(); ++i) {
|
// We allows to mock the eip of server.
|
||||||
local_sdp.add_candidate(candidate_ips[i], _srs_config->get_rtc_server_listen(), "host");
|
if (!mock_eip.empty()) {
|
||||||
|
local_sdp.add_candidate(mock_eip, _srs_config->get_rtc_server_listen(), "host");
|
||||||
|
} else {
|
||||||
|
std::vector<string> candidate_ips = get_candidate_ips();
|
||||||
|
for (int i = 0; i < (int)candidate_ips.size(); ++i) {
|
||||||
|
local_sdp.add_candidate(candidate_ips[i], _srs_config->get_rtc_server_listen(), "host");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
session->set_remote_sdp(remote_sdp);
|
session->set_remote_sdp(remote_sdp);
|
||||||
|
|
|
@ -233,7 +233,7 @@ public:
|
||||||
virtual srs_error_t on_udp_packet(SrsUdpMuxSocket* udp_mux_skt);
|
virtual srs_error_t on_udp_packet(SrsUdpMuxSocket* udp_mux_skt);
|
||||||
public:
|
public:
|
||||||
virtual srs_error_t listen_api();
|
virtual srs_error_t listen_api();
|
||||||
SrsRtcSession* create_rtc_session(const SrsRequest& req, const SrsSdp& remote_sdp, SrsSdp& local_sdp);
|
SrsRtcSession* create_rtc_session(const SrsRequest& req, const SrsSdp& remote_sdp, SrsSdp& local_sdp, const std::string& mock_eip);
|
||||||
bool insert_into_id_sessions(const std::string& peer_id, SrsRtcSession* rtc_session);
|
bool insert_into_id_sessions(const std::string& peer_id, SrsRtcSession* rtc_session);
|
||||||
void check_and_clean_timeout_session();
|
void check_and_clean_timeout_session();
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -429,7 +429,7 @@ int srs_sendmmsg(srs_netfd_t stfd, struct mmsghdr *msgvec, unsigned int vlen, in
|
||||||
return vlen;
|
return vlen;
|
||||||
#else
|
#else
|
||||||
if (vlen == 1) {
|
if (vlen == 1) {
|
||||||
#if 0
|
#if 1
|
||||||
int r0 = srs_sendmsg(stfd, &msgvec->msg_hdr, flags, timeout);
|
int r0 = srs_sendmsg(stfd, &msgvec->msg_hdr, flags, timeout);
|
||||||
if (r0 < 0) {
|
if (r0 < 0) {
|
||||||
return r0;
|
return r0;
|
||||||
|
|
Loading…
Reference in a new issue