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

Unified Diff: webrtc/p2p/client/basicportallocator.h

Issue 1998813002: Fixing the behavior of the candidate filter with pooled candidates. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Undoing unintentional "git cl format" of unrelated files. Created 4 years, 7 months 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 | « webrtc/p2p/base/turnport.cc ('k') | webrtc/p2p/client/basicportallocator.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/p2p/client/basicportallocator.h
diff --git a/webrtc/p2p/client/basicportallocator.h b/webrtc/p2p/client/basicportallocator.h
index 6a719c73bdd65e270ac67db1bef9545cbf733147..8ea66c431e76d560a6299c2831d77a1a83dfeb06 100644
--- a/webrtc/p2p/client/basicportallocator.h
+++ b/webrtc/p2p/client/basicportallocator.h
@@ -88,6 +88,7 @@ class BasicPortAllocatorSession : public PortAllocatorSession,
rtc::Thread* network_thread() { return network_thread_; }
rtc::PacketSocketFactory* socket_factory() { return socket_factory_; }
+ void SetCandidateFilter(uint32_t filter) override;
void StartGettingPorts() override;
void StopGettingPorts() override;
void ClearGettingPorts() override;
@@ -113,36 +114,40 @@ class BasicPortAllocatorSession : public PortAllocatorSession,
private:
class PortData {
public:
- PortData() : port_(NULL), sequence_(NULL), state_(STATE_INIT) {}
+ PortData() {}
PortData(Port* port, AllocationSequence* seq)
- : port_(port), sequence_(seq), state_(STATE_INIT) {
- }
+ : port_(port), sequence_(seq) {}
Port* port() const { return port_; }
AllocationSequence* sequence() const { return sequence_; }
- bool ready() const { return state_ == STATE_READY; }
+ bool has_pairable_candidate() const { return has_pairable_candidate_; }
bool complete() const { return state_ == STATE_COMPLETE; }
bool error() const { return state_ == STATE_ERROR; }
- void set_ready() { ASSERT(state_ == STATE_INIT); state_ = STATE_READY; }
+ void set_has_pairable_candidate(bool has_pairable_candidate) {
+ if (has_pairable_candidate) {
+ ASSERT(state_ == STATE_INPROGRESS);
+ }
+ has_pairable_candidate_ = has_pairable_candidate;
+ }
void set_complete() {
state_ = STATE_COMPLETE;
}
void set_error() {
- ASSERT(state_ == STATE_INIT || state_ == STATE_READY);
+ ASSERT(state_ == STATE_INPROGRESS);
state_ = STATE_ERROR;
}
private:
enum State {
- STATE_INIT, // No candidates allocated yet.
- STATE_READY, // At least one candidate is ready for process.
- STATE_COMPLETE, // All candidates allocated and ready for process.
- STATE_ERROR // Error in gathering candidates.
+ STATE_INPROGRESS, // Still gathering candidates.
+ STATE_COMPLETE, // All candidates allocated and ready for process.
+ STATE_ERROR // Error in gathering candidates.
};
- Port* port_;
- AllocationSequence* sequence_;
- State state_;
+ Port* port_ = nullptr;
+ AllocationSequence* sequence_ = nullptr;
+ State state_ = STATE_INPROGRESS;
+ bool has_pairable_candidate_ = false;
};
void OnConfigReady(PortConfiguration* config);
@@ -168,6 +173,10 @@ class BasicPortAllocatorSession : public PortAllocatorSession,
void GetNetworks(std::vector<rtc::Network*>* networks);
bool CheckCandidateFilter(const Candidate& c) const;
+ bool CandidatePairable(const Candidate& c, const Port* port) const;
+ // Clear the related address according to the flags and candidate filter
+ // in order to avoid leaking any information.
+ Candidate SanitizeRelatedAddress(const Candidate& c) const;
BasicPortAllocator* allocator_;
rtc::Thread* network_thread_;
@@ -180,6 +189,7 @@ class BasicPortAllocatorSession : public PortAllocatorSession,
std::vector<PortConfiguration*> configs_;
std::vector<AllocationSequence*> sequences_;
std::vector<PortData> ports_;
+ uint32_t candidate_filter_ = CF_ALL;
friend class AllocationSequence;
};
« no previous file with comments | « webrtc/p2p/base/turnport.cc ('k') | webrtc/p2p/client/basicportallocator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698