mirror of
https://github.com/ossrs/srs.git
synced 2025-02-13 20:01:56 +00:00
Log: Use 8 bytes random string as context id
This commit is contained in:
parent
5b199249d0
commit
742826a655
6 changed files with 33 additions and 35 deletions
|
@ -57,20 +57,6 @@ using namespace std;
|
||||||
#include <srs_app_rtc_server.hpp>
|
#include <srs_app_rtc_server.hpp>
|
||||||
#include <srs_app_rtc_source.hpp>
|
#include <srs_app_rtc_source.hpp>
|
||||||
|
|
||||||
// TODO: FIXME: Move to utility.
|
|
||||||
string gen_random_str(int len)
|
|
||||||
{
|
|
||||||
static string random_table = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
||||||
|
|
||||||
string ret;
|
|
||||||
ret.reserve(len);
|
|
||||||
for (int i = 0; i < len; ++i) {
|
|
||||||
ret.append(1, random_table[random() % random_table.size()]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64_t SrsNtp::kMagicNtpFractionalUnit = 1ULL << 32;
|
uint64_t SrsNtp::kMagicNtpFractionalUnit = 1ULL << 32;
|
||||||
|
|
||||||
SrsNtp::SrsNtp()
|
SrsNtp::SrsNtp()
|
||||||
|
|
|
@ -75,9 +75,6 @@ const uint8_t kSLI = 2;
|
||||||
const uint8_t kRPSI = 3;
|
const uint8_t kRPSI = 3;
|
||||||
const uint8_t kAFB = 15;
|
const uint8_t kAFB = 15;
|
||||||
|
|
||||||
// TODO: FIXME: Move to utility.
|
|
||||||
extern std::string gen_random_str(int len);
|
|
||||||
|
|
||||||
class SrsNtp
|
class SrsNtp
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
#include <srs_app_http_api.hpp>
|
#include <srs_app_http_api.hpp>
|
||||||
#include <srs_app_rtc_dtls.hpp>
|
#include <srs_app_rtc_dtls.hpp>
|
||||||
#include <srs_service_utility.hpp>
|
#include <srs_service_utility.hpp>
|
||||||
|
#include <srs_protocol_utility.hpp>
|
||||||
#include <srs_app_rtc_source.hpp>
|
#include <srs_app_rtc_source.hpp>
|
||||||
#include <srs_app_rtc_api.hpp>
|
#include <srs_app_rtc_api.hpp>
|
||||||
|
|
||||||
|
@ -310,12 +311,12 @@ srs_error_t SrsRtcServer::create_session(
|
||||||
return srs_error_new(ERROR_RTC_SOURCE_BUSY, "stream %s busy", req->get_stream_url().c_str());
|
return srs_error_new(ERROR_RTC_SOURCE_BUSY, "stream %s busy", req->get_stream_url().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string local_pwd = gen_random_str(32);
|
std::string local_pwd = srs_random_str(32);
|
||||||
std::string local_ufrag = "";
|
std::string local_ufrag = "";
|
||||||
// TODO: FIXME: Rename for a better name, it's not an username.
|
// TODO: FIXME: Rename for a better name, it's not an username.
|
||||||
std::string username = "";
|
std::string username = "";
|
||||||
while (true) {
|
while (true) {
|
||||||
local_ufrag = gen_random_str(8);
|
local_ufrag = srs_random_str(8);
|
||||||
|
|
||||||
username = local_ufrag + ":" + remote_sdp.get_ice_ufrag();
|
username = local_ufrag + ":" + remote_sdp.get_ice_ufrag();
|
||||||
if (!map_username_session.count(username)) {
|
if (!map_username_session.count(username)) {
|
||||||
|
@ -361,9 +362,9 @@ srs_error_t SrsRtcServer::create_session2(SrsSdp& local_sdp, SrsRtcConnection**
|
||||||
{
|
{
|
||||||
srs_error_t err = srs_success;
|
srs_error_t err = srs_success;
|
||||||
|
|
||||||
std::string local_pwd = gen_random_str(32);
|
std::string local_pwd = srs_random_str(32);
|
||||||
// TODO: FIXME: Collision detect.
|
// TODO: FIXME: Collision detect.
|
||||||
std::string local_ufrag = gen_random_str(8);
|
std::string local_ufrag = srs_random_str(8);
|
||||||
|
|
||||||
SrsRtcConnection* session = new SrsRtcConnection(this);
|
SrsRtcConnection* session = new SrsRtcConnection(this);
|
||||||
*psession = session;
|
*psession = session;
|
||||||
|
|
|
@ -148,20 +148,39 @@ void srs_parse_query_string(string q, map<string,string>& query)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool _random_initialized = false;
|
||||||
|
|
||||||
void srs_random_generate(char* bytes, int size)
|
void srs_random_generate(char* bytes, int size)
|
||||||
{
|
{
|
||||||
static bool _random_initialized = false;
|
|
||||||
if (!_random_initialized) {
|
if (!_random_initialized) {
|
||||||
srand(0);
|
|
||||||
_random_initialized = true;
|
_random_initialized = true;
|
||||||
|
::srandom((unsigned long)(srs_update_system_time() | (::getpid()<<13)));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
// the common value in [0x0f, 0xf0]
|
// the common value in [0x0f, 0xf0]
|
||||||
bytes[i] = 0x0f + (rand() % (256 - 0x0f - 0x0f));
|
bytes[i] = 0x0f + (random() % (256 - 0x0f - 0x0f));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string srs_random_str(int len)
|
||||||
|
{
|
||||||
|
if (!_random_initialized) {
|
||||||
|
_random_initialized = true;
|
||||||
|
::srandom((unsigned long)(srs_update_system_time() | (::getpid()<<13)));
|
||||||
|
}
|
||||||
|
|
||||||
|
static string random_table = "01234567890123456789012345678901234567890123456789abcdefghijklmnopqrstuvwxyz";
|
||||||
|
|
||||||
|
string ret;
|
||||||
|
ret.reserve(len);
|
||||||
|
for (int i = 0; i < len; ++i) {
|
||||||
|
ret.append(1, random_table[random() % random_table.size()]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
string srs_generate_tc_url(string host, string vhost, string app, int port)
|
string srs_generate_tc_url(string host, string vhost, string app, int port)
|
||||||
{
|
{
|
||||||
string tcUrl = "rtmp://";
|
string tcUrl = "rtmp://";
|
||||||
|
|
|
@ -65,11 +65,12 @@ extern void srs_discovery_tc_url(std::string tcUrl, std::string& schema, std::st
|
||||||
// must format as key=value&...&keyN=valueN
|
// must format as key=value&...&keyN=valueN
|
||||||
extern void srs_parse_query_string(std::string q, std::map<std::string, std::string>& query);
|
extern void srs_parse_query_string(std::string q, std::map<std::string, std::string>& query);
|
||||||
|
|
||||||
/**
|
// Generate ramdom data for handshake.
|
||||||
* generate ramdom data for handshake.
|
|
||||||
*/
|
|
||||||
extern void srs_random_generate(char* bytes, int size);
|
extern void srs_random_generate(char* bytes, int size);
|
||||||
|
|
||||||
|
// Generate random string [0-9a-z] in size of len bytes.
|
||||||
|
extern std::string srs_random_str(int len);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* generate the tcUrl without param.
|
* generate the tcUrl without param.
|
||||||
* @remark Use host as tcUrl.vhost if vhost is default vhost.
|
* @remark Use host as tcUrl.vhost if vhost is default vhost.
|
||||||
|
|
|
@ -31,6 +31,7 @@ using namespace std;
|
||||||
|
|
||||||
#include <srs_kernel_error.hpp>
|
#include <srs_kernel_error.hpp>
|
||||||
#include <srs_kernel_utility.hpp>
|
#include <srs_kernel_utility.hpp>
|
||||||
|
#include <srs_protocol_utility.hpp>
|
||||||
|
|
||||||
#define SRS_BASIC_LOG_SIZE 1024
|
#define SRS_BASIC_LOG_SIZE 1024
|
||||||
|
|
||||||
|
@ -44,14 +45,7 @@ SrsThreadContext::~SrsThreadContext()
|
||||||
|
|
||||||
SrsContextId SrsThreadContext::generate_id()
|
SrsContextId SrsThreadContext::generate_id()
|
||||||
{
|
{
|
||||||
static int id = 0;
|
SrsContextId cid = SrsContextId(srs_random_str(8));
|
||||||
|
|
||||||
if (id == 0) {
|
|
||||||
id = (100 + ((uint32_t)(int64_t)this)%1000);
|
|
||||||
}
|
|
||||||
int gid = id++;
|
|
||||||
|
|
||||||
SrsContextId cid = SrsContextId(srs_int2str(gid));
|
|
||||||
cache[srs_thread_self()] = cid;
|
cache[srs_thread_self()] = cid;
|
||||||
return cid;
|
return cid;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue