summaryrefslogtreecommitdiff
path: root/p2p/base/turnport.cc
diff options
context:
space:
mode:
Diffstat (limited to 'p2p/base/turnport.cc')
-rw-r--r--p2p/base/turnport.cc27
1 files changed, 16 insertions, 11 deletions
diff --git a/p2p/base/turnport.cc b/p2p/base/turnport.cc
index 92f62c8..01d7f9c 100644
--- a/p2p/base/turnport.cc
+++ b/p2p/base/turnport.cc
@@ -356,9 +356,10 @@ int TurnPort::SendTo(const void* data, size_t size,
return static_cast<int>(size);
}
-void TurnPort::OnReadPacket(talk_base::AsyncPacketSocket* socket,
- const char* data, size_t size,
- const talk_base::SocketAddress& remote_addr) {
+void TurnPort::OnReadPacket(
+ talk_base::AsyncPacketSocket* socket, const char* data, size_t size,
+ const talk_base::SocketAddress& remote_addr,
+ const talk_base::PacketTime& packet_time) {
ASSERT(socket == socket_.get());
ASSERT(remote_addr == server_address_.address);
@@ -373,9 +374,9 @@ void TurnPort::OnReadPacket(talk_base::AsyncPacketSocket* socket,
// a response to a previous request.
uint16 msg_type = talk_base::GetBE16(data);
if (IsTurnChannelData(msg_type)) {
- HandleChannelData(msg_type, data, size);
+ HandleChannelData(msg_type, data, size, packet_time);
} else if (msg_type == TURN_DATA_INDICATION) {
- HandleDataIndication(data, size);
+ HandleDataIndication(data, size, packet_time);
} else {
// This must be a response for one of our requests.
// Check success responses, but not errors, for MESSAGE-INTEGRITY.
@@ -460,7 +461,8 @@ void TurnPort::OnAllocateRequestTimeout() {
OnAllocateError();
}
-void TurnPort::HandleDataIndication(const char* data, size_t size) {
+void TurnPort::HandleDataIndication(const char* data, size_t size,
+ const talk_base::PacketTime& packet_time) {
// Read in the message, and process according to RFC5766, Section 10.4.
talk_base::ByteBuffer buf(data, size);
TurnMessage msg;
@@ -495,11 +497,13 @@ void TurnPort::HandleDataIndication(const char* data, size_t size) {
return;
}
- DispatchPacket(data_attr->bytes(), data_attr->length(), ext_addr, PROTO_UDP);
+ DispatchPacket(data_attr->bytes(), data_attr->length(), ext_addr,
+ PROTO_UDP, packet_time);
}
void TurnPort::HandleChannelData(int channel_id, const char* data,
- size_t size) {
+ size_t size,
+ const talk_base::PacketTime& packet_time) {
// Read the message, and process according to RFC5766, Section 11.6.
// 0 1 2 3
// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
@@ -531,13 +535,14 @@ void TurnPort::HandleChannelData(int channel_id, const char* data,
}
DispatchPacket(data + TURN_CHANNEL_HEADER_SIZE, len, entry->address(),
- PROTO_UDP);
+ PROTO_UDP, packet_time);
}
void TurnPort::DispatchPacket(const char* data, size_t size,
- const talk_base::SocketAddress& remote_addr, ProtocolType proto) {
+ const talk_base::SocketAddress& remote_addr,
+ ProtocolType proto, const talk_base::PacketTime& packet_time) {
if (Connection* conn = GetConnection(remote_addr)) {
- conn->OnReadPacket(data, size);
+ conn->OnReadPacket(data, size, packet_time);
} else {
Port::OnReadPacket(data, size, remote_addr, proto);
}