Index: webrtc/p2p/base/port.cc |
diff --git a/webrtc/p2p/base/port.cc b/webrtc/p2p/base/port.cc |
index fbc64f2e0a784175a2f1f94ae25bac4aca3b710a..562df1abf1156046a39e954099dbc4954f9de479 100644 |
--- a/webrtc/p2p/base/port.cc |
+++ b/webrtc/p2p/base/port.cc |
@@ -597,6 +597,9 @@ void Port::SendBindingResponse(StunMessage* request, |
<< "Sent STUN ping response" |
<< ", to=" << addr.ToSensitiveString() |
<< ", id=" << rtc::hex_encode(response.transaction_id()); |
+ |
+ // Update the stats of corresponding connection. |
+ conn->sent_ping_responses_++; |
} |
} |
@@ -806,10 +809,16 @@ Connection::Connection(Port* port, |
send_rate_tracker_(100, 10u), |
sent_packets_discarded_(0), |
sent_packets_total_(0), |
+ sent_ping_requests_total_(0), |
+ sent_ping_requests_before_first_response_(0), |
+ sent_ping_responses_(0), |
+ recv_ping_requests_(0), |
+ recv_ping_responses_(0), |
reported_(false), |
state_(STATE_WAITING), |
receiving_timeout_(WEAK_CONNECTION_RECEIVE_TIMEOUT), |
- time_created_ms_(rtc::TimeMillis()) { |
+ time_created_ms_(rtc::TimeMillis()), |
+ received_first_response_(false) { |
// All of our connections start in WAITING state. |
// TODO(mallinath) - Start connections from STATE_FROZEN. |
// Wire up to send stun packets |
@@ -992,6 +1001,8 @@ void Connection::HandleBindingRequest(IceMessage* msg) { |
return; |
} |
+ recv_ping_requests_++; |
+ |
// This is a validated stun request from remote peer. |
port_->SendBindingResponse(msg, remote_addr); |
@@ -1256,6 +1267,10 @@ void Connection::OnConnectionRequestResponse(ConnectionRequest* request, |
} |
rtt_ = (RTT_RATIO * rtt_ + rtt) / (RTT_RATIO + 1); |
+ recv_ping_responses_++; |
+ if (!received_first_response_) { |
+ received_first_response_ = true; |
+ } |
MaybeAddPrflxCandidate(request, response); |
} |
@@ -1304,6 +1319,10 @@ void Connection::OnConnectionRequestSent(ConnectionRequest* request) { |
LOG_JV(sev, this) << "Sent STUN ping" |
<< ", id=" << rtc::hex_encode(request->id()) |
<< ", use_candidate=" << use_candidate; |
+ sent_ping_requests_total_++; |
+ if (!received_first_response_) { |
+ sent_ping_requests_before_first_response_++; |
+ } |
} |
void Connection::HandleRoleConflictFromPeer() { |
@@ -1377,6 +1396,26 @@ size_t Connection::sent_total_packets() { |
return sent_packets_total_; |
} |
+size_t Connection::sent_ping_requests_total() { |
+ return sent_ping_requests_total_; |
+} |
+ |
+size_t Connection::sent_ping_requests_before_first_response() { |
+ return sent_ping_requests_before_first_response_; |
+} |
+ |
+size_t Connection::sent_ping_responses() { |
+ return sent_ping_responses_; |
+} |
+ |
+size_t Connection::recv_ping_responses() { |
+ return recv_ping_responses_; |
+} |
+ |
+size_t Connection::recv_ping_requests() { |
+ return recv_ping_requests_; |
+} |
+ |
void Connection::MaybeAddPrflxCandidate(ConnectionRequest* request, |
StunMessage* response) { |
// RFC 5245 |