| Index: remoting/protocol/content_description.cc
|
| diff --git a/remoting/protocol/content_description.cc b/remoting/protocol/content_description.cc
|
| index eb2a892989468ea2790afb34ef4d8e64b359b414..61c3ff864af8ce360327daa24da2db1bd333c3ef 100644
|
| --- a/remoting/protocol/content_description.cc
|
| +++ b/remoting/protocol/content_description.cc
|
| @@ -63,12 +63,14 @@ XmlElement* FormatChannelConfig(const ChannelConfig& config,
|
| result->AddAttr(QName(kDefaultNs, kTransportAttr),
|
| ValueToName(kTransports, config.transport));
|
|
|
| - result->AddAttr(QName(kDefaultNs, kVersionAttr),
|
| - base::IntToString(config.version));
|
| + if (config.transport != ChannelConfig::TRANSPORT_NONE) {
|
| + result->AddAttr(QName(kDefaultNs, kVersionAttr),
|
| + base::IntToString(config.version));
|
|
|
| - if (config.codec != ChannelConfig::CODEC_UNDEFINED) {
|
| - result->AddAttr(QName(kDefaultNs, kCodecAttr),
|
| - ValueToName(kCodecs, config.codec));
|
| + if (config.codec != ChannelConfig::CODEC_UNDEFINED) {
|
| + result->AddAttr(QName(kDefaultNs, kCodecAttr),
|
| + ValueToName(kCodecs, config.codec));
|
| + }
|
| }
|
|
|
| return result;
|
| @@ -79,18 +81,28 @@ bool ParseChannelConfig(const XmlElement* element, bool codec_required,
|
| ChannelConfig* config) {
|
| if (!NameToValue(
|
| kTransports, element->Attr(QName(kDefaultNs, kTransportAttr)),
|
| - &config->transport) ||
|
| - !base::StringToInt(element->Attr(QName(kDefaultNs, kVersionAttr)),
|
| - &config->version)) {
|
| + &config->transport)) {
|
| return false;
|
| }
|
|
|
| - if (codec_required) {
|
| - if (!NameToValue(kCodecs, element->Attr(QName(kDefaultNs, kCodecAttr)),
|
| - &config->codec)) {
|
| + // Version is not required when transport="none".
|
| + if (config->transport != ChannelConfig::TRANSPORT_NONE) {
|
| + if (!base::StringToInt(element->Attr(QName(kDefaultNs, kVersionAttr)),
|
| + &config->version)) {
|
| return false;
|
| }
|
| +
|
| + // Codec is not required when transport="none".
|
| + if (codec_required) {
|
| + if (!NameToValue(kCodecs, element->Attr(QName(kDefaultNs, kCodecAttr)),
|
| + &config->codec)) {
|
| + return false;
|
| + }
|
| + } else {
|
| + config->codec = ChannelConfig::CODEC_UNDEFINED;
|
| + }
|
| } else {
|
| + config->version = 0;
|
| config->codec = ChannelConfig::CODEC_UNDEFINED;
|
| }
|
|
|
| @@ -191,9 +203,7 @@ bool ContentDescription::ParseChannelConfigs(
|
| if (optional && configs->empty()) {
|
| // If there's no mention of the tag, implicitly assume
|
| // TRANSPORT_NONE for the channel.
|
| - configs->push_back(ChannelConfig(ChannelConfig::TRANSPORT_NONE,
|
| - kDefaultStreamVersion,
|
| - ChannelConfig::CODEC_VERBATIM));
|
| + configs->push_back(ChannelConfig());
|
| }
|
| return true;
|
| }
|
|
|