| Index: media/cast/transport/transport/udp_transport.cc
|
| diff --git a/media/cast/transport/transport/udp_transport.cc b/media/cast/transport/transport/udp_transport.cc
|
| index bcce4f72f3172d1764e5d588cb880ae093908827..9669b17d4386a24fed929adeb96804cfaf996f5a 100644
|
| --- a/media/cast/transport/transport/udp_transport.cc
|
| +++ b/media/cast/transport/transport/udp_transport.cc
|
| @@ -54,6 +54,7 @@ UdpTransport::UdpTransport(
|
| send_pending_(false),
|
| receive_pending_(false),
|
| client_connected_(false),
|
| + next_dscp_value_(net::DSCP_NO_CHANGE),
|
| status_callback_(status_callback),
|
| weak_factory_(this) {
|
| DCHECK(!IsEmpty(local_end_point) || !IsEmpty(remote_end_point));
|
| @@ -88,6 +89,11 @@ void UdpTransport::StartReceiving(
|
| ScheduleReceiveNextPacket();
|
| }
|
|
|
| +void UdpTransport::SetDscp(net::DiffServCodePoint dscp) {
|
| + DCHECK(io_thread_proxy_->RunsTasksOnCurrentThread());
|
| + next_dscp_value_ = dscp;
|
| +}
|
| +
|
| void UdpTransport::ScheduleReceiveNextPacket() {
|
| DCHECK(io_thread_proxy_->RunsTasksOnCurrentThread());
|
| if (!packet_receiver_.is_null() && !receive_pending_) {
|
| @@ -162,6 +168,16 @@ bool UdpTransport::SendPacket(PacketRef packet, const base::Closure& cb) {
|
| return true;
|
| }
|
|
|
| + if (next_dscp_value_ != net::DSCP_NO_CHANGE) {
|
| + int result = udp_socket_->SetDiffServCodePoint(next_dscp_value_);
|
| + if (result != net::OK) {
|
| + LOG(ERROR) << "Unable to set DSCP: " << next_dscp_value_
|
| + << " to socket; Error: " << result;
|
| + }
|
| + // Don't change DSCP in next send.
|
| + next_dscp_value_ = net::DSCP_NO_CHANGE;
|
| + }
|
| +
|
| scoped_refptr<net::IOBuffer> buf =
|
| new net::WrappedIOBuffer(reinterpret_cast<char*>(&packet->data.front()));
|
|
|
|
|