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

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

Issue 2093623004: Add config to prune TURN ports (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Partially disable the test TestEachInterfaceHasItsOwnTurnPorts Created 4 years, 6 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.h ('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 8ea66c431e76d560a6299c2831d77a1a83dfeb06..bddb3967e544b37ff3ea62039903a9d6091de3e1 100644
--- a/webrtc/p2p/client/basicportallocator.h
+++ b/webrtc/p2p/client/basicportallocator.h
@@ -123,7 +123,15 @@ class BasicPortAllocatorSession : public PortAllocatorSession,
bool has_pairable_candidate() const { return has_pairable_candidate_; }
bool complete() const { return state_ == STATE_COMPLETE; }
bool error() const { return state_ == STATE_ERROR; }
+ bool pruned() const { return state_ == STATE_PRUNED; }
+ bool inprogress() const { return state_ == STATE_INPROGRESS; }
+ // Returns true if this port is ready to be used.
+ bool ready() const {
+ return has_pairable_candidate_ && state_ != STATE_ERROR &&
+ state_ != STATE_PRUNED;
+ }
+ void set_pruned() { state_ = STATE_PRUNED; }
void set_has_pairable_candidate(bool has_pairable_candidate) {
if (has_pairable_candidate) {
ASSERT(state_ == STATE_INPROGRESS);
@@ -142,7 +150,9 @@ class BasicPortAllocatorSession : public PortAllocatorSession,
enum State {
STATE_INPROGRESS, // Still gathering candidates.
STATE_COMPLETE, // All candidates allocated and ready for process.
- STATE_ERROR // Error in gathering candidates.
+ STATE_ERROR, // Error in gathering candidates.
+ STATE_PRUNED // Pruned by higher priority ports on the same network
+ // interface. Only TURN ports may be pruned.
};
Port* port_ = nullptr;
AllocationSequence* sequence_ = nullptr;
@@ -178,6 +188,10 @@ class BasicPortAllocatorSession : public PortAllocatorSession,
// in order to avoid leaking any information.
Candidate SanitizeRelatedAddress(const Candidate& c) const;
+ Port* GetBestTurnPortForNetwork(const std::string& network_name) const;
+ // Returns true if at least one TURN port is pruned.
+ bool PruneTurnPorts(Port* newly_pairable_turn_port);
+
BasicPortAllocator* allocator_;
rtc::Thread* network_thread_;
std::unique_ptr<rtc::PacketSocketFactory> owned_socket_factory_;
@@ -190,6 +204,8 @@ class BasicPortAllocatorSession : public PortAllocatorSession,
std::vector<AllocationSequence*> sequences_;
std::vector<PortData> ports_;
uint32_t candidate_filter_ = CF_ALL;
+ // Whether to prune low-priority ports, taken from the port allocator.
+ bool prune_turn_ports_;
friend class AllocationSequence;
};
« no previous file with comments | « webrtc/p2p/base/turnport.h ('k') | webrtc/p2p/client/basicportallocator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698