Revert 5545 "Update libjingle to 61514460"
> Update libjingle to 61514460
>
> TBR=tommi@webrtc.org
>
> Review URL: https://webrtc-codereview.appspot.com/8649004
TBR=xians@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/8669004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@5547 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/talk/app/webrtc/mediastreamhandler.cc b/talk/app/webrtc/mediastreamhandler.cc
index ca8e105..a94eef3 100644
--- a/talk/app/webrtc/mediastreamhandler.cc
+++ b/talk/app/webrtc/mediastreamhandler.cc
@@ -106,8 +106,6 @@
void LocalAudioTrackHandler::OnEnabledChanged() {
cricket::AudioOptions options;
if (audio_track_->enabled() && audio_track_->GetSource()) {
- // TODO(xians): Remove this static_cast since we should be able to connect
- // a remote audio track to peer connection.
options = static_cast<LocalAudioSource*>(
audio_track_->GetSource())->options();
}
@@ -127,12 +125,10 @@
: TrackHandler(track, ssrc),
audio_track_(track),
provider_(provider) {
- track->GetSource()->RegisterAudioObserver(this);
OnEnabledChanged();
}
RemoteAudioTrackHandler::~RemoteAudioTrackHandler() {
- audio_track_->GetSource()->UnregisterAudioObserver(this);
}
void RemoteAudioTrackHandler::Stop() {
@@ -147,14 +143,6 @@
audio_track_->GetRenderer());
}
-void RemoteAudioTrackHandler::OnSetVolume(double volume) {
- // When the track is disabled, the volume of the source, which is the
- // corresponding WebRtc Voice Engine channel will be 0. So we do not allow
- // setting the volume to the source when the track is disabled.
- if (audio_track_->enabled())
- provider_->SetAudioPlayoutVolume(ssrc(), volume);
-}
-
LocalVideoTrackHandler::LocalVideoTrackHandler(
VideoTrackInterface* track,
uint32 ssrc,
diff --git a/talk/app/webrtc/mediastreamhandler.h b/talk/app/webrtc/mediastreamhandler.h
index 53afd55..625de85 100644
--- a/talk/app/webrtc/mediastreamhandler.h
+++ b/talk/app/webrtc/mediastreamhandler.h
@@ -118,8 +118,7 @@
// RemoteAudioTrackHandler listen to events on a remote AudioTrack instance
// connected to a PeerConnection and orders the |provider| to executes the
// requested change.
-class RemoteAudioTrackHandler : public AudioSourceInterface::AudioObserver,
- public TrackHandler {
+class RemoteAudioTrackHandler : public TrackHandler {
public:
RemoteAudioTrackHandler(AudioTrackInterface* track,
uint32 ssrc,
@@ -132,9 +131,6 @@
virtual void OnEnabledChanged() OVERRIDE;
private:
- // AudioSourceInterface::AudioObserver implementation.
- virtual void OnSetVolume(double volume) OVERRIDE;
-
AudioTrackInterface* audio_track_;
AudioProviderInterface* provider_;
};
diff --git a/talk/app/webrtc/mediastreamhandler_unittest.cc b/talk/app/webrtc/mediastreamhandler_unittest.cc
index 6eedb7e..475258e 100644
--- a/talk/app/webrtc/mediastreamhandler_unittest.cc
+++ b/talk/app/webrtc/mediastreamhandler_unittest.cc
@@ -31,7 +31,6 @@
#include "talk/app/webrtc/audiotrack.h"
#include "talk/app/webrtc/mediastream.h"
-#include "talk/app/webrtc/remoteaudiosource.h"
#include "talk/app/webrtc/streamcollection.h"
#include "talk/app/webrtc/videosource.h"
#include "talk/app/webrtc/videotrack.h"
@@ -60,7 +59,6 @@
MOCK_METHOD4(SetAudioSend, void(uint32 ssrc, bool enable,
const cricket::AudioOptions& options,
cricket::AudioRenderer* renderer));
- MOCK_METHOD2(SetAudioPlayoutVolume, void(uint32 ssrc, double volume));
};
// Helper class to test MediaStreamHandler.
@@ -112,11 +110,12 @@
FakeVideoSource::Create());
video_track_ = VideoTrack::Create(kVideoTrackId, source);
EXPECT_TRUE(stream_->AddTrack(video_track_));
+ audio_track_ = AudioTrack::Create(kAudioTrackId,
+ NULL);
+ EXPECT_TRUE(stream_->AddTrack(audio_track_));
}
void AddLocalAudioTrack() {
- audio_track_ = AudioTrack::Create(kAudioTrackId, NULL);
- EXPECT_TRUE(stream_->AddTrack(audio_track_));
EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc, true, _, _));
handlers_.AddLocalAudioTrack(stream_, stream_->GetAudioTracks()[0],
kAudioSsrc);
@@ -145,9 +144,6 @@
}
void AddRemoteAudioTrack() {
- audio_track_ = AudioTrack::Create(kAudioTrackId,
- RemoteAudioSource::Create().get());
- EXPECT_TRUE(stream_->AddTrack(audio_track_));
EXPECT_CALL(audio_provider_, SetAudioPlayout(kAudioSsrc, true, _));
handlers_.AddRemoteAudioTrack(stream_, stream_->GetAudioTracks()[0],
kAudioSsrc);
@@ -296,27 +292,4 @@
handlers_.TearDown();
}
-TEST_F(MediaStreamHandlerTest, RemoteAudioTrackSetVolume) {
- AddRemoteAudioTrack();
-
- double volume = 0.5;
- EXPECT_CALL(audio_provider_, SetAudioPlayoutVolume(kAudioSsrc, volume));
- audio_track_->GetSource()->SetVolume(volume);
-
- // Disable the audio track, this should prevent setting the volume.
- EXPECT_CALL(audio_provider_, SetAudioPlayout(kAudioSsrc, false, _));
- audio_track_->set_enabled(false);
- audio_track_->GetSource()->SetVolume(1.0);
-
- EXPECT_CALL(audio_provider_, SetAudioPlayout(kAudioSsrc, true, _));
- audio_track_->set_enabled(true);
-
- double new_volume = 0.8;
- EXPECT_CALL(audio_provider_, SetAudioPlayoutVolume(kAudioSsrc, new_volume));
- audio_track_->GetSource()->SetVolume(new_volume);
-
- RemoveRemoteAudioTrack();
- handlers_.TearDown();
-}
-
} // namespace webrtc
diff --git a/talk/app/webrtc/mediastreaminterface.h b/talk/app/webrtc/mediastreaminterface.h
index fa0572e..96d0942 100644
--- a/talk/app/webrtc/mediastreaminterface.h
+++ b/talk/app/webrtc/mediastreaminterface.h
@@ -142,24 +142,9 @@
// AudioSourceInterface is a reference counted source used for AudioTracks.
// The same source can be used in multiple AudioTracks.
+// TODO(perkj): Extend this class with necessary methods to allow separate
+// sources for each audio track.
class AudioSourceInterface : public MediaSourceInterface {
- public:
- class AudioObserver {
- public:
- virtual void OnSetVolume(double volume) = 0;
-
- protected:
- virtual ~AudioObserver() {}
- };
-
- // TODO(xians): Makes all the interface pure virtual after Chrome has their
- // implementations.
- // Sets the volume to the source. |volume| is in the range of [0, 10].
- virtual void SetVolume(double volume) {}
-
- // Registers/unregisters observer to the audio source.
- virtual void RegisterAudioObserver(AudioObserver* observer) {}
- virtual void UnregisterAudioObserver(AudioObserver* observer) {}
};
// Interface for receiving audio data from a AudioTrack.
diff --git a/talk/app/webrtc/mediastreamprovider.h b/talk/app/webrtc/mediastreamprovider.h
index 5cf0e27..ae00b1d 100644
--- a/talk/app/webrtc/mediastreamprovider.h
+++ b/talk/app/webrtc/mediastreamprovider.h
@@ -53,10 +53,6 @@
const cricket::AudioOptions& options,
cricket::AudioRenderer* renderer) = 0;
- // Sets the audio playout volume of a remote audio track with |ssrc|.
- // |volume| is in the range of [0, 10].
- virtual void SetAudioPlayoutVolume(uint32 ssrc, double volume) = 0;
-
protected:
virtual ~AudioProviderInterface() {}
};
diff --git a/talk/app/webrtc/mediastreamsignaling.cc b/talk/app/webrtc/mediastreamsignaling.cc
index 14648ee..610b3f8 100644
--- a/talk/app/webrtc/mediastreamsignaling.cc
+++ b/talk/app/webrtc/mediastreamsignaling.cc
@@ -33,7 +33,6 @@
#include "talk/app/webrtc/mediastreamproxy.h"
#include "talk/app/webrtc/mediaconstraintsinterface.h"
#include "talk/app/webrtc/mediastreamtrackproxy.h"
-#include "talk/app/webrtc/remoteaudiosource.h"
#include "talk/app/webrtc/remotevideocapturer.h"
#include "talk/app/webrtc/sctputils.h"
#include "talk/app/webrtc/videosource.h"
@@ -141,7 +140,7 @@
AudioTrackInterface* AddAudioTrack(webrtc::MediaStreamInterface* stream,
const std::string& track_id) {
return AddTrack<AudioTrackInterface, AudioTrack, AudioTrackProxy>(
- stream, track_id, RemoteAudioSource::Create().get());
+ stream, track_id, static_cast<AudioSourceInterface*>(NULL));
}
VideoTrackInterface* AddVideoTrack(webrtc::MediaStreamInterface* stream,
diff --git a/talk/app/webrtc/remoteaudiosource.cc b/talk/app/webrtc/remoteaudiosource.cc
deleted file mode 100644
index 1c275c7..0000000
--- a/talk/app/webrtc/remoteaudiosource.cc
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * libjingle
- * Copyright 2014, Google Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "talk/app/webrtc/remoteaudiosource.h"
-
-#include <algorithm>
-#include <functional>
-
-#include "talk/base/logging.h"
-
-namespace webrtc {
-
-talk_base::scoped_refptr<RemoteAudioSource> RemoteAudioSource::Create() {
- return new talk_base::RefCountedObject<RemoteAudioSource>();
-}
-
-RemoteAudioSource::RemoteAudioSource() {
-}
-
-RemoteAudioSource::~RemoteAudioSource() {
- ASSERT(audio_observers_.empty());
-}
-
-MediaSourceInterface::SourceState RemoteAudioSource::state() const {
- return MediaSourceInterface::kLive;
-}
-
-void RemoteAudioSource::SetVolume(double volume) {
- ASSERT(volume >= 0 && volume <= 10);
- for (AudioObserverList::iterator it = audio_observers_.begin();
- it != audio_observers_.end(); ++it) {
- (*it)->OnSetVolume(volume);
- }
-}
-
-void RemoteAudioSource::RegisterAudioObserver(AudioObserver* observer) {
- ASSERT(observer != NULL);
- ASSERT(std::find(audio_observers_.begin(), audio_observers_.end(),
- observer) == audio_observers_.end());
- audio_observers_.push_back(observer);
-}
-
-void RemoteAudioSource::UnregisterAudioObserver(AudioObserver* observer) {
- ASSERT(observer != NULL);
- audio_observers_.remove(observer);
-}
-
-} // namespace webrtc
diff --git a/talk/app/webrtc/remoteaudiosource.h b/talk/app/webrtc/remoteaudiosource.h
deleted file mode 100644
index ed24214..0000000
--- a/talk/app/webrtc/remoteaudiosource.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * libjingle
- * Copyright 2014, Google Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef TALK_APP_WEBRTC_REMOTEAUDIOSOURCE_H_
-#define TALK_APP_WEBRTC_REMOTEAUDIOSOURCE_H_
-
-#include <list>
-
-#include "talk/app/webrtc/mediastreaminterface.h"
-#include "talk/app/webrtc/notifier.h"
-
-namespace webrtc {
-
-using webrtc::AudioSourceInterface;
-
-// This class implements the audio source used by the remote audio track.
-class RemoteAudioSource : public Notifier<AudioSourceInterface> {
- public:
- // Creates an instance of RemoteAudioSource.
- static talk_base::scoped_refptr<RemoteAudioSource> Create();
-
- protected:
- RemoteAudioSource();
- virtual ~RemoteAudioSource();
-
- private:
- typedef std::list<AudioObserver*> AudioObserverList;
-
- // MediaSourceInterface implementation.
- virtual MediaSourceInterface::SourceState state() const OVERRIDE;
-
- // AudioSourceInterface implementation.
- virtual void SetVolume(double volume) OVERRIDE;
- virtual void RegisterAudioObserver(AudioObserver* observer) OVERRIDE;
- virtual void UnregisterAudioObserver(AudioObserver* observer) OVERRIDE;
-
- AudioObserverList audio_observers_;
-};
-
-} // namespace webrtc
-
-#endif // TALK_APP_WEBRTC_REMOTEAUDIOSOURCE_H_
diff --git a/talk/app/webrtc/statscollector.cc b/talk/app/webrtc/statscollector.cc
index ae02830..2efc11b 100644
--- a/talk/app/webrtc/statscollector.cc
+++ b/talk/app/webrtc/statscollector.cc
@@ -78,7 +78,6 @@
const char StatsReport::kStatsValueNameEncodeUsagePercent[] =
"googEncodeUsagePercent";
-const char StatsReport::kStatsValueNameExpandRate[] = "googExpandRate";
const char StatsReport::kStatsValueNameFingerprint[] = "googFingerprint";
const char StatsReport::kStatsValueNameFingerprintAlgorithm[] =
"googFingerprintAlgorithm";
@@ -222,7 +221,7 @@
info.bytes_rcvd);
report->AddValue(StatsReport::kStatsValueNameJitterReceived,
info.jitter_ms);
- report->AddValue(StatsReport::kStatsValueNameExpandRate,
+ report->AddValue(StatsReport::kStatsValueNameNetEqExpandRate,
talk_base::ToString<float>(info.expand_rate));
report->AddValue(StatsReport::kStatsValueNamePacketsReceived,
info.packets_rcvd);
@@ -570,14 +569,6 @@
talk_base::scoped_ptr<talk_base::SSLFingerprint> ssl_fingerprint(
talk_base::SSLFingerprint::Create(digest_algorithm, cert));
-
- // SSLFingerprint::Create can fail if the algorithm returned by
- // SSLCertificate::GetSignatureDigestAlgorithm is not supported by the
- // implementation of SSLCertificate::ComputeDigest. This currently happens
- // with MD5- and SHA-224-signed certificates when linked to libNSS.
- if (!ssl_fingerprint)
- return std::string();
-
std::string fingerprint = ssl_fingerprint->GetRfc4572Fingerprint();
talk_base::Buffer der_buffer;
diff --git a/talk/app/webrtc/statscollector_unittest.cc b/talk/app/webrtc/statscollector_unittest.cc
index 49560ea..1adcb0e 100644
--- a/talk/app/webrtc/statscollector_unittest.cc
+++ b/talk/app/webrtc/statscollector_unittest.cc
@@ -302,24 +302,16 @@
webrtc::StatsReport::kStatsReportTypeComponent,
reports,
webrtc::StatsReport::kStatsValueNameLocalCertificateId);
- if (local_ders.size() > 0) {
- EXPECT_NE(kNotFound, local_certificate_id);
- CheckCertChainReports(reports, local_ders, local_certificate_id);
- } else {
- EXPECT_EQ(kNotFound, local_certificate_id);
- }
+ EXPECT_NE(kNotFound, local_certificate_id);
+ CheckCertChainReports(reports, local_ders, local_certificate_id);
// Check remote certificate chain.
std::string remote_certificate_id = ExtractStatsValue(
webrtc::StatsReport::kStatsReportTypeComponent,
reports,
webrtc::StatsReport::kStatsValueNameRemoteCertificateId);
- if (remote_ders.size() > 0) {
- EXPECT_NE(kNotFound, remote_certificate_id);
- CheckCertChainReports(reports, remote_ders, remote_certificate_id);
- } else {
- EXPECT_EQ(kNotFound, remote_certificate_id);
- }
+ EXPECT_NE(kNotFound, remote_certificate_id);
+ CheckCertChainReports(reports, remote_ders, remote_certificate_id);
}
cricket::FakeMediaEngine* media_engine_;
@@ -782,21 +774,4 @@
ASSERT_EQ(kNotFound, remote_certificate_id);
}
-// This test verifies that a remote certificate with an unsupported digest
-// algorithm is correctly ignored.
-TEST_F(StatsCollectorTest, UnsupportedDigestIgnored) {
- // Build a local certificate.
- std::string local_der = "This is the local der.";
- talk_base::FakeSSLCertificate local_cert(DerToPem(local_der));
-
- // Build a remote certificate with an unsupported digest algorithm.
- std::string remote_der = "This is somebody else's der.";
- talk_base::FakeSSLCertificate remote_cert(DerToPem(remote_der));
- remote_cert.set_digest_algorithm("foobar");
-
- TestCertificateReports(local_cert, std::vector<std::string>(1, local_der),
- remote_cert, std::vector<std::string>());
-}
-
-
} // namespace
diff --git a/talk/app/webrtc/statstypes.h b/talk/app/webrtc/statstypes.h
index 76ae32c..9110da3 100644
--- a/talk/app/webrtc/statstypes.h
+++ b/talk/app/webrtc/statstypes.h
@@ -141,7 +141,6 @@
static const char kStatsValueNameEchoDelayStdDev[];
static const char kStatsValueNameEchoReturnLoss[];
static const char kStatsValueNameEchoReturnLossEnhancement[];
- static const char kStatsValueNameExpandRate[];
static const char kStatsValueNameFirsReceived[];
static const char kStatsValueNameFirsSent[];
static const char kStatsValueNameFrameHeightInput[];
diff --git a/talk/app/webrtc/webrtc.scons b/talk/app/webrtc/webrtc.scons
index dd4bea0..9b1af3c 100644
--- a/talk/app/webrtc/webrtc.scons
+++ b/talk/app/webrtc/webrtc.scons
@@ -31,7 +31,6 @@
'peerconnectionfactory.cc',
'peerconnection.cc',
'portallocatorfactory.cc',
- 'remoteaudiosource.cc',
'roapmessages.cc',
'roapsession.cc',
'roapsignaling.cc',
diff --git a/talk/app/webrtc/webrtcsession.cc b/talk/app/webrtc/webrtcsession.cc
index ef6af49..59d7270 100644
--- a/talk/app/webrtc/webrtcsession.cc
+++ b/talk/app/webrtc/webrtcsession.cc
@@ -866,18 +866,6 @@
voice_channel_->SetChannelOptions(options);
}
-void WebRtcSession::SetAudioPlayoutVolume(uint32 ssrc, double volume) {
- ASSERT(signaling_thread()->IsCurrent());
- ASSERT(volume >= 0 && volume <= 10);
- if (!voice_channel_) {
- LOG(LS_ERROR) << "SetAudioPlayoutVolume: No audio channel exists.";
- return;
- }
-
- if (!voice_channel_->SetOutputScaling(ssrc, volume, volume))
- ASSERT(false);
-}
-
bool WebRtcSession::SetCaptureDevice(uint32 ssrc,
cricket::VideoCapturer* camera) {
ASSERT(signaling_thread()->IsCurrent());
diff --git a/talk/app/webrtc/webrtcsession.h b/talk/app/webrtc/webrtcsession.h
index 628aa1e..384ac47 100644
--- a/talk/app/webrtc/webrtcsession.h
+++ b/talk/app/webrtc/webrtcsession.h
@@ -165,7 +165,6 @@
virtual void SetAudioSend(uint32 ssrc, bool enable,
const cricket::AudioOptions& options,
cricket::AudioRenderer* renderer) OVERRIDE;
- virtual void SetAudioPlayoutVolume(uint32 ssrc, double volume) OVERRIDE;
// Implements VideoMediaProviderInterface.
virtual bool SetCaptureDevice(uint32 ssrc,
diff --git a/talk/base/asyncpacketsocket.h b/talk/base/asyncpacketsocket.h
index d9e1bff..29ab55f 100644
--- a/talk/base/asyncpacketsocket.h
+++ b/talk/base/asyncpacketsocket.h
@@ -28,7 +28,6 @@
#ifndef TALK_BASE_ASYNCPACKETSOCKET_H_
#define TALK_BASE_ASYNCPACKETSOCKET_H_
-#include "talk/base/buffer.h"
#include "talk/base/dscp.h"
#include "talk/base/sigslot.h"
#include "talk/base/socket.h"
@@ -36,29 +35,6 @@
namespace talk_base {
-// This structure holds the info needed to update the packet send time header
-// extension, including the information needed to update the authentication tag
-// after changing the value.
-struct PacketTimeUpdateParams {
- PacketTimeUpdateParams()
- : rtp_sendtime_extension_id(-1), srtp_auth_tag_len(-1),
- srtp_packet_index(-1) {
- }
-
- int rtp_sendtime_extension_id; // extension header id present in packet.
- Buffer srtp_auth_key; // Authentication key.
- int srtp_auth_tag_len; // Authentication tag length.
- int64 srtp_packet_index; // Required for Rtp Packet authentication.
-};
-
-// This structure holds meta information for the packet which is about to send
-// over network.
-struct PacketOptions {
- PacketOptions() : dscp(DSCP_NO_CHANGE) {}
- DiffServCodePoint dscp;
- PacketTimeUpdateParams packet_time_params;
-};
-
// This structure will have the information about when packet is actually
// received by socket.
struct PacketTime {
diff --git a/talk/base/fakenetwork.h b/talk/base/fakenetwork.h
index 497ff20..3bdc97f 100644
--- a/talk/base/fakenetwork.h
+++ b/talk/base/fakenetwork.h
@@ -109,12 +109,10 @@
prefix_length = kFakeIPv6NetworkPrefixLength;
}
IPAddress prefix = TruncateIP(it->ipaddr(), prefix_length);
- std::string key = MakeNetworkKey(it->hostname(), prefix, prefix_length);
scoped_ptr<Network> net(new Network(it->hostname(),
it->hostname(),
prefix,
- prefix_length,
- key));
+ prefix_length));
net->AddIP(it->ipaddr());
networks.push_back(net.release());
}
diff --git a/talk/base/fakesslidentity.h b/talk/base/fakesslidentity.h
index ee0e0a2..203bb83 100644
--- a/talk/base/fakesslidentity.h
+++ b/talk/base/fakesslidentity.h
@@ -38,12 +38,9 @@
class FakeSSLCertificate : public talk_base::SSLCertificate {
public:
- // SHA-1 is the default digest algorithm because it is available in all build
- // configurations used for unit testing.
- explicit FakeSSLCertificate(const std::string& data)
- : data_(data), digest_algorithm_(DIGEST_SHA_1) {}
+ explicit FakeSSLCertificate(const std::string& data) : data_(data) {}
explicit FakeSSLCertificate(const std::vector<std::string>& certs)
- : data_(certs.front()), digest_algorithm_(DIGEST_SHA_1) {
+ : data_(certs.front()) {
std::vector<std::string>::const_iterator it;
// Skip certs[0].
for (it = certs.begin() + 1; it != certs.end(); ++it) {
@@ -61,11 +58,10 @@
VERIFY(SSLIdentity::PemToDer(kPemTypeCertificate, data_, &der_string));
der_buffer->SetData(der_string.c_str(), der_string.size());
}
- void set_digest_algorithm(const std::string& algorithm) {
- digest_algorithm_ = algorithm;
- }
virtual bool GetSignatureDigestAlgorithm(std::string* algorithm) const {
- *algorithm = digest_algorithm_;
+ // SHA-1 is chosen because it is available in all build configurations
+ // used for unit testing.
+ *algorithm = DIGEST_SHA_1;
return true;
}
virtual bool ComputeDigest(const std::string &algorithm,
@@ -90,7 +86,6 @@
}
std::string data_;
std::vector<FakeSSLCertificate> certs_;
- std::string digest_algorithm_;
};
class FakeSSLIdentity : public talk_base::SSLIdentity {
diff --git a/talk/base/network.cc b/talk/base/network.cc
index 95a2e4d..00b04c9 100644
--- a/talk/base/network.cc
+++ b/talk/base/network.cc
@@ -79,7 +79,16 @@
// Fetch list of networks every two seconds.
const int kNetworksUpdateIntervalMs = 2000;
-const int kHighestNetworkPreference = 127;
+
+// Makes a string key for this network. Used in the network manager's maps.
+// Network objects are keyed on interface name, network prefix and the
+// length of that prefix.
+std::string MakeNetworkKey(const std::string& name, const IPAddress& prefix,
+ int prefix_length) {
+ std::ostringstream ost;
+ ost << name << "%" << prefix.ToString() << "/" << prefix_length;
+ return ost.str();
+}
bool CompareNetworks(const Network* a, const Network* b) {
if (a->prefix_length() == b->prefix_length()) {
@@ -90,36 +99,9 @@
return a->name() < b->name();
}
-bool SortNetworks(const Network* a, const Network* b) {
- // Network types will be preferred above everything else while sorting
- // Networks.
-
- // Networks are sorted first by type.
- if (a->type() != b->type()) {
- return a->type() < b->type();
- }
-
- // After type, networks are sorted by IP address precedence values
- // from RFC 3484-bis
- if (IPAddressPrecedence(a->ip()) != IPAddressPrecedence(b->ip())) {
- return IPAddressPrecedence(a->ip()) > IPAddressPrecedence(b->ip());
- }
-
- // TODO(mallinath) - Add VPN and Link speed conditions while sorting.
-
- // Networks are sorted last by key.
- return a->key() > b->key();
-}
} // namespace
-std::string MakeNetworkKey(const std::string& name, const IPAddress& prefix,
- int prefix_length) {
- std::ostringstream ost;
- ost << name << "%" << prefix.ToString() << "/" << prefix_length;
- return ost.str();
-}
-
NetworkManager::NetworkManager() {
}
@@ -198,29 +180,6 @@
}
}
networks_ = merged_list;
-
- // If the network lists changes, we resort it.
- if (changed) {
- std::sort(networks_.begin(), networks_.end(), SortNetworks);
- // Now network interfaces are sorted, we should set the preference value
- // for each of the interfaces we are planning to use.
- // Preference order of network interfaces might have changed from previous
- // sorting due to addition of higher preference network interface.
- // Since we have already sorted the network interfaces based on our
- // requirements, we will just assign a preference value starting with 127,
- // in decreasing order.
- int pref = kHighestNetworkPreference;
- for (NetworkList::const_iterator iter = networks_.begin();
- iter != networks_.end(); ++iter) {
- (*iter)->set_preference(pref);
- if (pref > 0) {
- --pref;
- } else {
- LOG(LS_ERROR) << "Too many network interfaces to handle!";
- break;
- }
- }
- }
}
BasicNetworkManager::BasicNetworkManager()
@@ -281,7 +240,6 @@
continue;
}
}
-
int prefix_length = CountIPMaskBits(mask);
prefix = TruncateIP(ip, prefix_length);
std::string key = MakeNetworkKey(std::string(cursor->ifa_name),
@@ -291,8 +249,7 @@
scoped_ptr<Network> network(new Network(cursor->ifa_name,
cursor->ifa_name,
prefix,
- prefix_length,
- key));
+ prefix_length));
network->set_scope_id(scope_id);
network->AddIP(ip);
bool ignored = ((cursor->ifa_flags & IFF_LOOPBACK) ||
@@ -429,7 +386,6 @@
continue;
}
}
-
IPAddress prefix;
int prefix_length = GetPrefix(prefixlist, ip, &prefix);
std::string key = MakeNetworkKey(name, prefix, prefix_length);
@@ -438,8 +394,7 @@
scoped_ptr<Network> network(new Network(name,
description,
prefix,
- prefix_length,
- key));
+ prefix_length));
network->set_scope_id(scope_id);
network->AddIP(ip);
bool ignore = ((adapter_addrs->IfType == IF_TYPE_SOFTWARE_LOOPBACK) ||
@@ -607,20 +562,11 @@
}
Network::Network(const std::string& name, const std::string& desc,
- const IPAddress& prefix, int prefix_length,
- const std::string& key)
- : name_(name), description_(desc), prefix_(prefix),
- prefix_length_(prefix_length), key_(key), scope_id_(0), ignored_(false),
- uniform_numerator_(0), uniform_denominator_(0), exponential_numerator_(0),
- exponential_denominator_(0), type_(ADAPTER_TYPE_UNKNOWN), preference_(0) {
-}
-
-Network::Network(const std::string& name, const std::string& desc,
const IPAddress& prefix, int prefix_length)
: name_(name), description_(desc), prefix_(prefix),
prefix_length_(prefix_length), scope_id_(0), ignored_(false),
uniform_numerator_(0), uniform_denominator_(0), exponential_numerator_(0),
- exponential_denominator_(0), type_(ADAPTER_TYPE_UNKNOWN), preference_(0) {
+ exponential_denominator_(0) {
}
std::string Network::ToString() const {
@@ -654,5 +600,4 @@
ips_ = ips;
return changed;
}
-
} // namespace talk_base
diff --git a/talk/base/network.h b/talk/base/network.h
index 75a443b..63f3e73 100644
--- a/talk/base/network.h
+++ b/talk/base/network.h
@@ -45,23 +45,9 @@
namespace talk_base {
class Network;
+class NetworkSession;
class Thread;
-enum AdapterType {
- // This enum resembles the one in Chromium net::ConnectionType.
- ADAPTER_TYPE_UNKNOWN = 0,
- ADAPTER_TYPE_ETHERNET = 1,
- ADAPTER_TYPE_WIFI = 2,
- ADAPTER_TYPE_CELLULAR = 3,
- ADAPTER_TYPE_VPN = 4
-};
-
-// Makes a string key for this network. Used in the network manager's maps.
-// Network objects are keyed on interface name, network prefix and the
-// length of that prefix.
-std::string MakeNetworkKey(const std::string& name, const IPAddress& prefix,
- int prefix_length);
-
// Generic network manager interface. It provides list of local
// networks.
class NetworkManager {
@@ -182,12 +168,7 @@
// Represents a Unix-type network interface, with a name and single address.
class Network {
public:
- Network() : prefix_(INADDR_ANY), scope_id_(0),
- type_(ADAPTER_TYPE_UNKNOWN) {}
- Network(const std::string& name, const std::string& description,
- const IPAddress& prefix, int prefix_length,
- const std::string& key);
-
+ Network() : prefix_(INADDR_ANY), scope_id_(0) {}
Network(const std::string& name, const std::string& description,
const IPAddress& prefix, int prefix_length);
@@ -203,10 +184,6 @@
// Returns the length, in bits, of this network's prefix.
int prefix_length() const { return prefix_length_; }
- // |key_| has unique value per network interface. Used in sorting network
- // interfaces. Key is derived from interface name and it's prefix.
- std::string key() const { return key_; }
-
// Returns the Network's current idea of the 'best' IP it has.
// 'Best' currently means the first one added.
// TODO: We should be preferring temporary addresses.
@@ -238,32 +215,27 @@
bool ignored() const { return ignored_; }
void set_ignored(bool ignored) { ignored_ = ignored; }
- AdapterType type() const { return type_; }
- int preference() const { return preference_; }
- void set_preference(int preference) { preference_ = preference; }
-
// Debugging description of this network
std::string ToString() const;
private:
+ typedef std::vector<NetworkSession*> SessionList;
+
std::string name_;
std::string description_;
IPAddress prefix_;
int prefix_length_;
- std::string key_;
std::vector<IPAddress> ips_;
int scope_id_;
bool ignored_;
+ SessionList sessions_;
double uniform_numerator_;
double uniform_denominator_;
double exponential_numerator_;
double exponential_denominator_;
- AdapterType type_;
- int preference_;
friend class NetworkManager;
};
-
} // namespace talk_base
#endif // TALK_BASE_NETWORK_H_
diff --git a/talk/base/network_unittest.cc b/talk/base/network_unittest.cc
index 85aa2f8..e11e78d 100644
--- a/talk/base/network_unittest.cc
+++ b/talk/base/network_unittest.cc
@@ -527,33 +527,6 @@
}
}
-TEST_F(NetworkTest, TestNetworkListSorting) {
- BasicNetworkManager manager;
- Network ipv4_network1("test_eth0", "Test Network Adapter 1",
- IPAddress(0x12345600U), 24);
- ipv4_network1.AddIP(IPAddress(0x12345600U));
-
- IPAddress ip;
- IPAddress prefix;
- EXPECT_TRUE(IPFromString("2400:4030:1:2c00:be30:abcd:efab:cdef", &ip));
- prefix = TruncateIP(ip, 64);
- Network ipv6_eth1_publicnetwork1_ip1("test_eth1", "Test NetworkAdapter 2",
- prefix, 64);
- ipv6_eth1_publicnetwork1_ip1.AddIP(ip);
-
- NetworkManager::NetworkList list;
- list.push_back(new Network(ipv4_network1));
- list.push_back(new Network(ipv6_eth1_publicnetwork1_ip1));
- Network* net1 = list[0];
- Network* net2 = list[1];
-
- bool changed = false;
- MergeNetworkList(manager, list, &changed);
- ASSERT_TRUE(changed);
- // After sorting IPv6 network should be higher order than IPv4 networks.
- EXPECT_TRUE(net1->preference() < net2->preference());
-}
-
#if defined(POSIX)
// Verify that we correctly handle interfaces with no address.
TEST_F(NetworkTest, TestConvertIfAddrsNoAddress) {
diff --git a/talk/base/openssl.h b/talk/base/openssl.h
deleted file mode 100644
index e2cfd2b..0000000
--- a/talk/base/openssl.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * libjingle
- * Copyright 2013, Google Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef TALK_BASE_OPENSSL_H_
-#define TALK_BASE_OPENSSL_H_
-
-#include <openssl/ssl.h>
-
-#if (OPENSSL_VERSION_NUMBER < 0x10001000L)
-#error OpenSSL is older than 1.0.1, which is the minimum supported version.
-#endif
-
-#endif // TALK_BASE_OPENSSL_H_
diff --git a/talk/base/openssladapter.cc b/talk/base/openssladapter.cc
index 9e6fe72..95d5a1a 100644
--- a/talk/base/openssladapter.cc
+++ b/talk/base/openssladapter.cc
@@ -41,6 +41,7 @@
#include <openssl/err.h>
#include <openssl/opensslv.h>
#include <openssl/rand.h>
+#include <openssl/ssl.h>
#include <openssl/x509v3.h>
#if HAVE_CONFIG_H
@@ -49,7 +50,6 @@
#include "talk/base/common.h"
#include "talk/base/logging.h"
-#include "talk/base/openssl.h"
#include "talk/base/sslroots.h"
#include "talk/base/stringutils.h"
@@ -688,7 +688,11 @@
int extension_nid = OBJ_obj2nid(X509_EXTENSION_get_object(extension));
if (extension_nid == NID_subject_alt_name) {
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
const X509V3_EXT_METHOD* meth = X509V3_EXT_get(extension);
+#else
+ X509V3_EXT_METHOD* meth = X509V3_EXT_get(extension);
+#endif
if (!meth)
break;
@@ -699,8 +703,12 @@
// See http://readlist.com/lists/openssl.org/openssl-users/0/4761.html.
unsigned char* ext_value_data = extension->value->data;
+#if OPENSSL_VERSION_NUMBER >= 0x0090800fL
const unsigned char **ext_value_data_ptr =
(const_cast<const unsigned char **>(&ext_value_data));
+#else
+ unsigned char **ext_value_data_ptr = &ext_value_data;
+#endif
if (meth->it) {
ext_str = ASN1_item_d2i(NULL, ext_value_data_ptr,
diff --git a/talk/base/openssldigest.cc b/talk/base/openssldigest.cc
index 3d0d227..3d9276d 100644
--- a/talk/base/openssldigest.cc
+++ b/talk/base/openssldigest.cc
@@ -30,7 +30,6 @@
#include "talk/base/openssldigest.h"
#include "talk/base/common.h"
-#include "talk/base/openssl.h"
namespace talk_base {
@@ -79,6 +78,7 @@
md = EVP_md5();
} else if (algorithm == DIGEST_SHA_1) {
md = EVP_sha1();
+#if OPENSSL_VERSION_NUMBER >= 0x00908000L
} else if (algorithm == DIGEST_SHA_224) {
md = EVP_sha224();
} else if (algorithm == DIGEST_SHA_256) {
@@ -87,6 +87,7 @@
md = EVP_sha384();
} else if (algorithm == DIGEST_SHA_512) {
md = EVP_sha512();
+#endif
} else {
return false;
}
@@ -107,6 +108,7 @@
*algorithm = DIGEST_MD5;
} else if (md_type == NID_sha1) {
*algorithm = DIGEST_SHA_1;
+#if OPENSSL_VERSION_NUMBER >= 0x00908000L
} else if (md_type == NID_sha224) {
*algorithm = DIGEST_SHA_224;
} else if (md_type == NID_sha256) {
@@ -115,6 +117,7 @@
*algorithm = DIGEST_SHA_384;
} else if (md_type == NID_sha512) {
*algorithm = DIGEST_SHA_512;
+#endif
} else {
algorithm->clear();
return false;
diff --git a/talk/base/opensslidentity.cc b/talk/base/opensslidentity.cc
index bd361d1..33b02dd 100644
--- a/talk/base/opensslidentity.cc
+++ b/talk/base/opensslidentity.cc
@@ -32,6 +32,7 @@
// Must be included first before openssl headers.
#include "talk/base/win32.h" // NOLINT
+#include <openssl/ssl.h>
#include <openssl/bio.h>
#include <openssl/err.h>
#include <openssl/pem.h>
@@ -42,7 +43,6 @@
#include "talk/base/checks.h"
#include "talk/base/helpers.h"
#include "talk/base/logging.h"
-#include "talk/base/openssl.h"
#include "talk/base/openssldigest.h"
namespace talk_base {
@@ -66,6 +66,15 @@
static EVP_PKEY* MakeKey() {
LOG(LS_INFO) << "Making key pair";
EVP_PKEY* pkey = EVP_PKEY_new();
+#if OPENSSL_VERSION_NUMBER < 0x00908000l
+ // Only RSA_generate_key is available. Use that.
+ RSA* rsa = RSA_generate_key(KEY_LENGTH, 0x10001, NULL, NULL);
+ if (!EVP_PKEY_assign_RSA(pkey, rsa)) {
+ EVP_PKEY_free(pkey);
+ RSA_free(rsa);
+ return NULL;
+ }
+#else
// RSA_generate_key is deprecated. Use _ex version.
BIGNUM* exponent = BN_new();
RSA* rsa = RSA_new();
@@ -80,6 +89,7 @@
}
// ownership of rsa struct was assigned, don't free it.
BN_free(exponent);
+#endif
LOG(LS_INFO) << "Returning key pair";
return pkey;
}
diff --git a/talk/base/opensslstreamadapter.cc b/talk/base/opensslstreamadapter.cc
index cafef92..576b4245 100644
--- a/talk/base/opensslstreamadapter.cc
+++ b/talk/base/opensslstreamadapter.cc
@@ -37,6 +37,7 @@
#include <openssl/crypto.h>
#include <openssl/err.h>
#include <openssl/rand.h>
+#include <openssl/ssl.h>
#include <openssl/x509v3.h>
#include <vector>
@@ -44,7 +45,6 @@
#include "talk/base/common.h"
#include "talk/base/logging.h"
#include "talk/base/stream.h"
-#include "talk/base/openssl.h"
#include "talk/base/openssladapter.h"
#include "talk/base/openssldigest.h"
#include "talk/base/opensslidentity.h"
@@ -53,6 +53,15 @@
namespace talk_base {
+#if (OPENSSL_VERSION_NUMBER >= 0x10001000L)
+#define HAVE_DTLS_SRTP
+#endif
+
+#if (OPENSSL_VERSION_NUMBER >= 0x10000000L)
+#define HAVE_DTLS
+#endif
+
+#ifdef HAVE_DTLS_SRTP
// SRTP cipher suite table
struct SrtpCipherMapEntry {
const char* external_name;
@@ -65,6 +74,7 @@
{"AES_CM_128_HMAC_SHA1_32", "SRTP_AES128_CM_SHA1_32"},
{NULL, NULL}
};
+#endif
//////////////////////////////////////////////////////////////////////
// StreamBIO
@@ -238,6 +248,7 @@
bool use_context,
uint8* result,
size_t result_len) {
+#ifdef HAVE_DTLS_SRTP
int i;
i = SSL_export_keying_material(ssl_, result, result_len,
@@ -249,6 +260,9 @@
return false;
return true;
+#else
+ return false;
+#endif
}
bool OpenSSLStreamAdapter::SetDtlsSrtpCiphers(
@@ -258,6 +272,7 @@
if (state_ != SSL_NONE)
return false;
+#ifdef HAVE_DTLS_SRTP
for (std::vector<std::string>::const_iterator cipher = ciphers.begin();
cipher != ciphers.end(); ++cipher) {
bool found = false;
@@ -283,9 +298,13 @@
srtp_ciphers_ = internal_ciphers;
return true;
+#else
+ return false;
+#endif
}
bool OpenSSLStreamAdapter::GetDtlsSrtpCipher(std::string* cipher) {
+#ifdef HAVE_DTLS_SRTP
ASSERT(state_ == SSL_CONNECTED);
if (state_ != SSL_CONNECTED)
return false;
@@ -307,6 +326,9 @@
ASSERT(false); // This should never happen
return false;
+#else
+ return false;
+#endif
}
int OpenSSLStreamAdapter::StartSSLWithServer(const char* server_name) {
@@ -643,12 +665,14 @@
case SSL_ERROR_WANT_READ: {
LOG(LS_VERBOSE) << " -- error want read";
+#ifdef HAVE_DTLS
struct timeval timeout;
if (DTLSv1_get_timeout(ssl_, &timeout)) {
int delay = timeout.tv_sec * 1000 + timeout.tv_usec/1000;
Thread::Current()->PostDelayed(delay, this, MSG_TIMEOUT, 0);
}
+#endif
}
break;
@@ -703,7 +727,9 @@
// Process our own messages and then pass others to the superclass
if (MSG_TIMEOUT == msg->message_id) {
LOG(LS_INFO) << "DTLS timeout expired";
+#ifdef HAVE_DTLS
DTLSv1_handle_timeout(ssl_);
+#endif
ContinueSSL();
} else {
StreamInterface::OnMessage(msg);
@@ -714,11 +740,19 @@
SSL_CTX *ctx = NULL;
if (role_ == SSL_CLIENT) {
+#ifdef HAVE_DTLS
ctx = SSL_CTX_new(ssl_mode_ == SSL_MODE_DTLS ?
DTLSv1_client_method() : TLSv1_client_method());
+#else
+ ctx = SSL_CTX_new(TLSv1_client_method());
+#endif
} else {
+#ifdef HAVE_DTLS
ctx = SSL_CTX_new(ssl_mode_ == SSL_MODE_DTLS ?
DTLSv1_server_method() : TLSv1_server_method());
+#else
+ ctx = SSL_CTX_new(TLSv1_server_method());
+#endif
}
if (ctx == NULL)
return NULL;
@@ -737,12 +771,14 @@
SSL_CTX_set_verify_depth(ctx, 4);
SSL_CTX_set_cipher_list(ctx, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH");
+#ifdef HAVE_DTLS_SRTP
if (!srtp_ciphers_.empty()) {
if (SSL_CTX_set_tlsext_use_srtp(ctx, srtp_ciphers_.c_str())) {
SSL_CTX_free(ctx);
return NULL;
}
}
+#endif
return ctx;
}
@@ -816,15 +852,27 @@
}
bool OpenSSLStreamAdapter::HaveDtls() {
+#ifdef HAVE_DTLS
return true;
+#else
+ return false;
+#endif
}
bool OpenSSLStreamAdapter::HaveDtlsSrtp() {
+#ifdef HAVE_DTLS_SRTP
return true;
+#else
+ return false;
+#endif
}
bool OpenSSLStreamAdapter::HaveExporter() {
+#ifdef HAVE_DTLS_SRTP
return true;
+#else
+ return false;
+#endif
}
} // namespace talk_base
diff --git a/talk/base/physicalsocketserver.cc b/talk/base/physicalsocketserver.cc
index 07a9d4b..d4a4b1a 100644
--- a/talk/base/physicalsocketserver.cc
+++ b/talk/base/physicalsocketserver.cc
@@ -541,8 +541,6 @@
case OPT_DSCP:
LOG(LS_WARNING) << "Socket::OPT_DSCP not supported.";
return -1;
- case OPT_RTP_SENDTIME_EXTN_ID:
- return -1; // No logging is necessary as this not a OS socket option.
default:
ASSERT(false);
return -1;
diff --git a/talk/base/socket.h b/talk/base/socket.h
index 590645f..47f5522 100644
--- a/talk/base/socket.h
+++ b/talk/base/socket.h
@@ -185,10 +185,7 @@
OPT_SNDBUF, // send buffer size
OPT_NODELAY, // whether Nagle algorithm is enabled
OPT_IPV6_V6ONLY, // Whether the socket is IPv6 only.
- OPT_DSCP, // DSCP code
- OPT_RTP_SENDTIME_EXTN_ID, // This is a non-traditional socket option param.
- // This is specific to libjingle and will be used
- // if SendTime option is needed at socket level.
+ OPT_DSCP // DSCP code
};
virtual int GetOption(Option opt, int* value) = 0;
virtual int SetOption(Option opt, int value) = 0;
diff --git a/talk/base/thread_unittest.cc b/talk/base/thread_unittest.cc
index 728e321..3a9103f 100644
--- a/talk/base/thread_unittest.cc
+++ b/talk/base/thread_unittest.cc
@@ -339,7 +339,7 @@
Thread* expected_thread_;
};
-TEST_F(AsyncInvokeTest, DISABLED_FireAndForget) {
+TEST_F(AsyncInvokeTest, FireAndForget) {
AsyncInvoker invoker;
// Create and start the thread.
Thread thread;
@@ -350,7 +350,7 @@
EXPECT_TRUE_WAIT(called, kWaitTimeout);
}
-TEST_F(AsyncInvokeTest, DISABLED_WithCallback) {
+TEST_F(AsyncInvokeTest, WithCallback) {
AsyncInvoker invoker;
// Create and start the thread.
Thread thread;
@@ -379,7 +379,7 @@
EXPECT_EQ(0, int_value_);
}
-TEST_F(AsyncInvokeTest, DISABLED_CancelCallingThread) {
+TEST_F(AsyncInvokeTest, CancelCallingThread) {
AsyncInvoker invoker;
{ // Create and start the thread.
Thread thread;
@@ -396,7 +396,7 @@
EXPECT_EQ(0, int_value_);
}
-TEST_F(AsyncInvokeTest, DISABLED_KillInvokerBeforeExecute) {
+TEST_F(AsyncInvokeTest, KillInvokerBeforeExecute) {
Thread thread;
thread.Start();
{
@@ -413,7 +413,7 @@
EXPECT_EQ(0, int_value_);
}
-TEST_F(AsyncInvokeTest, DISABLED_Flush) {
+TEST_F(AsyncInvokeTest, Flush) {
AsyncInvoker invoker;
bool flag1 = false;
bool flag2 = false;
@@ -431,7 +431,7 @@
EXPECT_TRUE(flag2);
}
-TEST_F(AsyncInvokeTest, DISABLED_FlushWithIds) {
+TEST_F(AsyncInvokeTest, FlushWithIds) {
AsyncInvoker invoker;
bool flag1 = false;
bool flag2 = false;
diff --git a/talk/libjingle.gyp b/talk/libjingle.gyp
index 73c8a04..0ed5c64 100755
--- a/talk/libjingle.gyp
+++ b/talk/libjingle.gyp
@@ -715,7 +715,6 @@
'conditions': [
['OS!="ios"', {
'sources': [
- 'base/openssl.h',
'base/openssladapter.cc',
'base/openssladapter.h',
'base/openssldigest.cc',
@@ -1176,8 +1175,6 @@
'app/webrtc/portallocatorfactory.cc',
'app/webrtc/portallocatorfactory.h',
'app/webrtc/proxy.h',
- 'app/webrtc/remoteaudiosource.cc',
- 'app/webrtc/remoteaudiosource.h',
'app/webrtc/remotevideocapturer.cc',
'app/webrtc/remotevideocapturer.h',
'app/webrtc/sctputils.cc',
diff --git a/talk/media/base/videoadapter.cc b/talk/media/base/videoadapter.cc
index 5b53d07..29be805 100644
--- a/talk/media/base/videoadapter.cc
+++ b/talk/media/base/videoadapter.cc
@@ -183,8 +183,7 @@
output_format_.interval = talk_base::_max(
output_format_.interval, input_format_.interval);
if (old_input_interval != input_format_.interval) {
- LOG(LS_INFO) << "VAdapt input interval changed from "
- << old_input_interval << " to " << input_format_.interval;
+ LOG(LS_INFO) << "VAdapt Input Interval: " << input_format_.interval;
}
}
@@ -219,8 +218,7 @@
output_format_.interval = talk_base::_max(
output_format_.interval, input_format_.interval);
if (old_output_interval != output_format_.interval) {
- LOG(LS_INFO) << "VAdapt output interval changed from "
- << old_output_interval << " to " << output_format_.interval;
+ LOG(LS_INFO) << "VAdapt Output Interval: " << output_format_.interval;
}
}
@@ -285,12 +283,16 @@
}
if (should_drop) {
// Show VAdapt log every 90 frames dropped. (3 seconds)
- if ((frames_in_ - frames_out_) % 90 == 0) {
+ // TODO(fbarchard): Consider GetLogSeverity() to change interval to less
+ // for LS_VERBOSE and more for LS_INFO.
+ bool show = (frames_in_ - frames_out_) % 90 == 0;
+
+ if (show) {
// TODO(fbarchard): Reduce to LS_VERBOSE when adapter info is not needed
// in default calls.
- LOG(LS_INFO) << "VAdapt Drop Frame: scaled " << frames_scaled_
- << " / out " << frames_out_
- << " / in " << frames_in_
+ LOG(LS_INFO) << "VAdapt Drop Frame: " << frames_scaled_
+ << " / " << frames_out_
+ << " / " << frames_in_
<< " Changes: " << adaption_changes_
<< " Input: " << in_frame->GetWidth()
<< "x" << in_frame->GetHeight()
@@ -342,9 +344,9 @@
if (show) {
// TODO(fbarchard): Reduce to LS_VERBOSE when adapter info is not needed
// in default calls.
- LOG(LS_INFO) << "VAdapt Frame: scaled " << frames_scaled_
- << " / out " << frames_out_
- << " / in " << frames_in_
+ LOG(LS_INFO) << "VAdapt Frame: " << frames_scaled_
+ << " / " << frames_out_
+ << " / " << frames_in_
<< " Changes: " << adaption_changes_
<< " Input: " << in_frame->GetWidth()
<< "x" << in_frame->GetHeight()
diff --git a/talk/media/sctp/sctpdataengine.cc b/talk/media/sctp/sctpdataengine.cc
index aae3d93..59e252a 100644
--- a/talk/media/sctp/sctpdataengine.cc
+++ b/talk/media/sctp/sctpdataengine.cc
@@ -237,10 +237,8 @@
// Set the initial value of the static SCTP Data Engines reference count.
int SctpDataEngine::usrsctp_engines_count = 0;
-void SctpDataEngine::AddRefEngine() {
- LOG(LS_VERBOSE) << "usrsctp_engines_count:" << usrsctp_engines_count;
+SctpDataEngine::SctpDataEngine() {
if (usrsctp_engines_count == 0) {
- LOG(LS_INFO) << "SctpDataEngine: Initializing usrsctp";
// First argument is udp_encapsulation_port, which is not releveant for our
// AF_CONN use of sctp.
usrsctp_init(0, cricket::OnSctpOutboundPacket, debug_sctp_printf);
@@ -278,25 +276,26 @@
cricket::kMaxSctpSid);
}
usrsctp_engines_count++;
-}
-void SctpDataEngine::ReleaseEngine() {
- usrsctp_engines_count--;
- if (usrsctp_engines_count == 0) {
- LOG(LS_INFO) << "SctpDataEngine: Shutting down";
- if (usrsctp_finish() != 0) {
- LOG_ERRNO(LS_ERROR) << "SctpDataEngine: usrsctp_finish failed: ";
- }
- }
- LOG(LS_VERBOSE) << "usrsctp_engines_count:" << usrsctp_engines_count;
-}
-
-SctpDataEngine::SctpDataEngine() {
- AddRefEngine();
+ // We don't put in a codec because we don't want one offered when we
+ // use the hybrid data engine.
+ // codecs_.push_back(cricket::DataCodec( kGoogleSctpDataCodecId,
+ // kGoogleSctpDataCodecName, 0));
}
SctpDataEngine::~SctpDataEngine() {
- ReleaseEngine();
+ // TODO(ldixon): There is currently a bug in teardown of usrsctp that blocks
+ // indefintely if a finish call made too soon after close calls. So teardown
+ // has been skipped. Once the bug is fixed, retest and enable teardown.
+ // Tracked in webrtc issue 2749.
+ //
+ // usrsctp_engines_count--;
+ // LOG(LS_VERBOSE) << "usrsctp_engines_count:" << usrsctp_engines_count;
+ // if (usrsctp_engines_count == 0) {
+ // if (usrsctp_finish() != 0) {
+ // LOG(LS_WARNING) << "usrsctp_finish.";
+ // }
+ // }
}
DataMediaChannel* SctpDataEngine::CreateChannel(
@@ -315,12 +314,10 @@
sending_(false),
receiving_(false),
debug_name_("SctpDataMediaChannel") {
- SctpDataEngine::AddRefEngine();
}
SctpDataMediaChannel::~SctpDataMediaChannel() {
CloseSctpSocket();
- SctpDataEngine::ReleaseEngine();
}
sockaddr_conn SctpDataMediaChannel::GetSctpSockAddr(int port) {
diff --git a/talk/media/sctp/sctpdataengine.h b/talk/media/sctp/sctpdataengine.h
index b03a25e..f2322ab 100644
--- a/talk/media/sctp/sctpdataengine.h
+++ b/talk/media/sctp/sctpdataengine.h
@@ -91,12 +91,6 @@
virtual const std::vector<DataCodec>& data_codecs() { return codecs_; }
- // Manages the lifetime of the usrsctp library data. Each SctpDataEngine
- // and SctpDataMediaChannel AddRefEngine the library at construction, and
- // ReleaseEngine at shutdown.
- static void AddRefEngine();
- static void ReleaseEngine();
-
private:
static int usrsctp_engines_count;
std::vector<DataCodec> codecs_;
diff --git a/talk/media/webrtc/webrtcvideoengine.cc b/talk/media/webrtc/webrtcvideoengine.cc
index ce5be90..d2e73ea 100644
--- a/talk/media/webrtc/webrtcvideoengine.cc
+++ b/talk/media/webrtc/webrtcvideoengine.cc
@@ -2632,15 +2632,6 @@
return false;
}
}
-
- if (send_time_extension) {
- // For video RTP packets, we would like to update AbsoluteSendTimeHeader
- // Extension closer to the network, @ socket level before sending.
- // Pushing the extension id to socket layer.
- MediaChannel::SetOption(NetworkInterface::ST_RTP,
- talk_base::Socket::OPT_RTP_SENDTIME_EXTN_ID,
- send_time_extension->id);
- }
return true;
}
diff --git a/talk/p2p/base/candidate.h b/talk/p2p/base/candidate.h
index 0fa9f0e..19eed8c 100644
--- a/talk/p2p/base/candidate.h
+++ b/talk/p2p/base/candidate.h
@@ -33,7 +33,6 @@
#include <string>
#include <sstream>
#include <iomanip>
-
#include "talk/base/basictypes.h"
#include "talk/base/socketaddress.h"
#include "talk/p2p/base/constants.h"
@@ -164,30 +163,13 @@
return ToStringInternal(true);
}
- uint32 GetPriority(uint32 type_preference,
- int network_adapter_preference) const {
+ uint32 GetPriority(uint32 type_preference) const {
// RFC 5245 - 4.1.2.1.
// priority = (2^24)*(type preference) +
// (2^8)*(local preference) +
// (2^0)*(256 - component ID)
-
- // |local_preference| length is 2 bytes, 0-65535 inclusive.
- // In our implemenation we will partion local_preference into
- // 0 1
- // 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- // | NIC Pref | Addr Pref |
- // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- // NIC Type - Type of the network adapter e.g. 3G/Wifi/Wired.
- // Addr Pref - Address preference value as per RFC 3484.
- // local preference is calculated as - NIC Type << 8 | Addr_Pref.
-
int addr_pref = IPAddressPrecedence(address_.ipaddr());
- int local_preference = (network_adapter_preference << 8) | addr_pref;
-
- return (type_preference << 24) |
- (local_preference << 8) |
- (256 - component_);
+ return (type_preference << 24) | (addr_pref << 8) | (256 - component_);
}
private:
@@ -195,9 +177,9 @@
std::ostringstream ost;
std::string address = sensitive ? address_.ToSensitiveString() :
address_.ToString();
- ost << "Cand[" << foundation_ << ":" << component_ << ":"
- << protocol_ << ":" << priority_ << ":"
- << address << ":" << type_ << ":" << related_address_ << ":"
+ ost << "Cand[" << id_ << ":" << component_ << ":"
+ << type_ << ":" << protocol_ << ":"
+ << network_name_ << ":" << address << ":"
<< username_ << ":" << password_ << "]";
return ost.str();
}
diff --git a/talk/p2p/base/p2ptransportchannel.cc b/talk/p2p/base/p2ptransportchannel.cc
index 1f53874..104b5e6 100644
--- a/talk/p2p/base/p2ptransportchannel.cc
+++ b/talk/p2p/base/p2ptransportchannel.cc
@@ -493,8 +493,7 @@
port->Network()->name(), 0U,
talk_base::ToString<uint32>(talk_base::ComputeCrc32(id)));
new_remote_candidate.set_priority(
- new_remote_candidate.GetPriority(ICE_TYPE_PREFERENCE_SRFLX,
- port->Network()->preference()));
+ new_remote_candidate.GetPriority(ICE_TYPE_PREFERENCE_SRFLX));
}
if (port->IceProtocol() == ICEPROTO_RFC5245) {
diff --git a/talk/p2p/base/p2ptransportchannel_unittest.cc b/talk/p2p/base/p2ptransportchannel_unittest.cc
index 53a39c2..7fff3da 100644
--- a/talk/p2p/base/p2ptransportchannel_unittest.cc
+++ b/talk/p2p/base/p2ptransportchannel_unittest.cc
@@ -1559,11 +1559,8 @@
// Test that we can quickly switch links if an interface goes down.
TEST_F(P2PTransportChannelMultihomedTest, TestFailover) {
AddAddress(0, kPublicAddrs[0]);
- // Adding alternate address will make sure |kPublicAddrs| has the higher
- // priority than others. This is due to FakeNetwork::AddInterface method.
- AddAddress(1, kAlternateAddrs[1]);
AddAddress(1, kPublicAddrs[1]);
-
+ AddAddress(1, kAlternateAddrs[1]);
// Use only local ports for simplicity.
SetAllocatorFlags(0, kOnlyLocalPorts);
SetAllocatorFlags(1, kOnlyLocalPorts);
diff --git a/talk/p2p/base/port.cc b/talk/p2p/base/port.cc
index 38031cb..b6421ad 100644
--- a/talk/p2p/base/port.cc
+++ b/talk/p2p/base/port.cc
@@ -258,7 +258,7 @@
c.set_type(type);
c.set_protocol(protocol);
c.set_address(address);
- c.set_priority(c.GetPriority(type_preference, network_->preference()));
+ c.set_priority(c.GetPriority(type_preference));
c.set_username(username_fragment());
c.set_password(password_);
c.set_network_name(network_->name());
diff --git a/talk/p2p/client/portallocator_unittest.cc b/talk/p2p/client/portallocator_unittest.cc
index 0ea8fb5..1417707 100644
--- a/talk/p2p/client/portallocator_unittest.cc
+++ b/talk/p2p/client/portallocator_unittest.cc
@@ -53,8 +53,8 @@
static const SocketAddress kClientAddr("11.11.11.11", 0);
static const SocketAddress kClientIPv6Addr(
"2401:fa00:4:1000:be30:5bff:fee5:c3", 0);
-static const SocketAddress kClientAddr2("22.22.22.22", 0);
static const SocketAddress kNatAddr("77.77.77.77", talk_base::NAT_SERVER_PORT);
+static const SocketAddress kRemoteClientAddr("22.22.22.22", 0);
static const SocketAddress kStunAddr("99.99.99.1", cricket::STUN_SERVER_PORT);
static const SocketAddress kRelayUdpIntAddr("99.99.99.2", 5000);
static const SocketAddress kRelayUdpExtAddr("99.99.99.3", 5001);
@@ -492,23 +492,6 @@
EXPECT_TRUE_WAIT(candidate_allocation_done_, 9000);
}
-TEST_F(PortAllocatorTest, TestCandidatePriorityOfMultipleInterfaces) {
- AddInterface(kClientAddr);
- AddInterface(kClientAddr2);
- // Allocating only host UDP ports. This is done purely for testing
- // convenience.
- allocator().set_flags(cricket::PORTALLOCATOR_DISABLE_TCP |
- cricket::PORTALLOCATOR_DISABLE_STUN |
- cricket::PORTALLOCATOR_DISABLE_RELAY);
- EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP));
- session_->StartGettingPorts();
- EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout);
- ASSERT_EQ(2U, candidates_.size());
- EXPECT_EQ(2U, ports_.size());
- // Candidates priorities should be different.
- EXPECT_NE(candidates_[0].priority(), candidates_[1].priority());
-}
-
// Test to verify ICE restart process.
TEST_F(PortAllocatorTest, TestGetAllPortsRestarts) {
AddInterface(kClientAddr);