Index: content/browser/renderer_host/p2p/socket_host_tcp.cc |
diff --git a/content/browser/renderer_host/p2p/socket_host_tcp.cc b/content/browser/renderer_host/p2p/socket_host_tcp.cc |
index b1cc79edf5cdd9c3072cb07736d83911c237f48f..e63e0ce97e07faec4caea09da6eb782d63dff2b2 100644 |
--- a/content/browser/renderer_host/p2p/socket_host_tcp.cc |
+++ b/content/browser/renderer_host/p2p/socket_host_tcp.cc |
@@ -18,6 +18,7 @@ |
#include "net/socket/tcp_client_socket.h" |
#include "net/url_request/url_request_context.h" |
#include "net/url_request/url_request_context_getter.h" |
+#include "third_party/libjingle/source/talk/base/asyncpacketsocket.h" |
namespace { |
@@ -454,6 +455,9 @@ void P2PSocketHostTcp::DoSend(const net::IPEndPoint& to, |
*reinterpret_cast<uint16*>(buffer->data()) = base::HostToNet16(data.size()); |
memcpy(buffer->data() + kPacketHeaderSize, &data[0], data.size()); |
+ talk_base::PacketOptions options; |
+ MaybeUpdateRtpSendTimeExtn(buffer->data(), buffer->BytesRemaining(), options); |
+ |
WriteOrQueue(buffer); |
} |
@@ -519,6 +523,10 @@ void P2PSocketHostStunTcp::DoSend(const net::IPEndPoint& to, |
new net::DrainableIOBuffer(new net::IOBuffer(size), size); |
memcpy(buffer->data(), &data[0], data.size()); |
+ // Update HMAC before writing padding bytes at the end. |
+ talk_base::PacketOptions options; |
+ MaybeUpdateRtpSendTimeExtn(buffer->data(), data.size(), options); |
+ |
if (pad_bytes) { |
char padding[4] = {0}; |
DCHECK_LE(pad_bytes, 4); |