diff options
Diffstat (limited to 'p2p/base/turnport.cc')
-rw-r--r-- | p2p/base/turnport.cc | 27 |
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); } |