Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(218)

Unified Diff: talk/session/media/srtpfilter.cc

Issue 1416093010: Remove global list of SRTP sessions. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « talk/session/media/srtpfilter.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: talk/session/media/srtpfilter.cc
diff --git a/talk/session/media/srtpfilter.cc b/talk/session/media/srtpfilter.cc
index 079ddfb57ee553474c2a42470c2de446d4b9c390..06ce7119ea39ef0db914141d2581890ddbf6b3fd 100644
--- a/talk/session/media/srtpfilter.cc
+++ b/talk/session/media/srtpfilter.cc
@@ -481,7 +481,7 @@ bool SrtpFilter::ParseKeyParams(const std::string& key_params,
bool SrtpSession::inited_ = false;
-// This lock protects SrtpSession::inited_ and SrtpSession::sessions_.
+// This lock protects SrtpSession::inited_.
rtc::GlobalLockPod SrtpSession::lock_;
SrtpSession::SrtpSession()
@@ -490,19 +490,12 @@ SrtpSession::SrtpSession()
rtcp_auth_tag_len_(0),
srtp_stat_(new SrtpStat()),
last_send_seq_num_(-1) {
- {
- rtc::GlobalLockScope ls(&lock_);
- sessions()->push_back(this);
- }
SignalSrtpError.repeat(srtp_stat_->SignalSrtpError);
}
SrtpSession::~SrtpSession() {
- {
- rtc::GlobalLockScope ls(&lock_);
- sessions()->erase(std::find(sessions()->begin(), sessions()->end(), this));
- }
if (session_) {
+ session_->user_data = nullptr;
srtp_dealloc(session_);
}
}
@@ -717,7 +710,7 @@ bool SrtpSession::SetKey(int type,
return false;
}
-
+ session_->user_data = this;
rtp_auth_tag_len_ = policy.rtp.auth_tag_len;
rtcp_auth_tag_len_ = policy.rtcp.auth_tag_len;
return true;
@@ -786,22 +779,12 @@ void SrtpSession::HandleEvent(const srtp_event_data_t* ev) {
}
void SrtpSession::HandleEventThunk(srtp_event_data_t* ev) {
- rtc::GlobalLockScope ls(&lock_);
-
- for (std::list<SrtpSession*>::iterator it = sessions()->begin();
- it != sessions()->end(); ++it) {
- if ((*it)->session_ == ev->session) {
- (*it)->HandleEvent(ev);
- break;
- }
+ SrtpSession* session = static_cast<SrtpSession*>(ev->session->user_data);
juberti 2015/11/10 01:25:59 Do we know what thread this gets invoked from? Wou
joachim 2015/11/10 16:59:56 Done.
+ if (session) {
+ session->HandleEvent(ev);
}
}
-std::list<SrtpSession*>* SrtpSession::sessions() {
- RTC_DEFINE_STATIC_LOCAL(std::list<SrtpSession*>, sessions, ());
- return &sessions;
-}
-
#else // !HAVE_SRTP
// On some systems, SRTP is not (yet) available.
« no previous file with comments | « talk/session/media/srtpfilter.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698