forked from mirrors/gecko-dev
Bug 1862773: Remove ifdefs (and dead code) r=jesup,bwc
ALLOW_DIRECT_SCTP_LISTEN_CONNECT is never set; The code isn't used and was mentioned for cleanup in https://bugzilla.mozilla.org/show_bug.cgi?id=855623#c34 SCTP_DTLS_SUPPORTED can be removed; DTLS is mandatory and this is always set. If it wouldn't, data channels wouldn't be operational Differential Revision: https://phabricator.services.mozilla.com/D192633
This commit is contained in:
parent
29ba507d7e
commit
24c4cf85f5
2 changed files with 4 additions and 187 deletions
|
|
@ -268,7 +268,6 @@ class DataChannelRegistry {
|
|||
DeinitUsrSctp();
|
||||
}
|
||||
|
||||
#ifdef SCTP_DTLS_SUPPORTED
|
||||
static int SctpDtlsOutput(void* addr, void* buffer, size_t length,
|
||||
uint8_t tos, uint8_t set_df) {
|
||||
uintptr_t id = reinterpret_cast<uintptr_t>(addr);
|
||||
|
|
@ -278,7 +277,6 @@ class DataChannelRegistry {
|
|||
}
|
||||
return connection->SctpDtlsOutput(addr, buffer, length, tos, set_df);
|
||||
}
|
||||
#endif
|
||||
|
||||
void InitUsrSctp() {
|
||||
#ifndef MOZ_PEERCONNECTION
|
||||
|
|
@ -1083,160 +1081,6 @@ int DataChannelConnection::SctpDtlsOutput(void* addr, void* buffer,
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef ALLOW_DIRECT_SCTP_LISTEN_CONNECT
|
||||
// listen for incoming associations
|
||||
// Blocks! - Don't call this from main thread!
|
||||
|
||||
bool DataChannelConnection::Listen(unsigned short port) {
|
||||
struct sockaddr_in addr = {};
|
||||
socklen_t addr_len;
|
||||
|
||||
NS_WARNING_ASSERTION(!NS_IsMainThread(),
|
||||
"Blocks, do not call from main thread!!!");
|
||||
|
||||
/* Acting as the 'server' */
|
||||
# ifdef HAVE_SIN_LEN
|
||||
addr.sin_len = sizeof(struct sockaddr_in);
|
||||
# endif
|
||||
addr.sin_family = AF_INET;
|
||||
addr.sin_port = htons(port);
|
||||
addr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||
DC_DEBUG(("Waiting for connections on port %u", ntohs(addr.sin_port)));
|
||||
{
|
||||
MutexAutoLock lock(mLock);
|
||||
SetState(DataChannelConnectionState::Connecting);
|
||||
}
|
||||
if (usrsctp_bind(mMasterSocket, reinterpret_cast<struct sockaddr*>(&addr),
|
||||
sizeof(struct sockaddr_in)) < 0) {
|
||||
DC_ERROR(("***Failed userspace_bind"));
|
||||
return false;
|
||||
}
|
||||
if (usrsctp_listen(mMasterSocket, 1) < 0) {
|
||||
DC_ERROR(("***Failed userspace_listen"));
|
||||
return false;
|
||||
}
|
||||
|
||||
DC_DEBUG(("Accepting connection"));
|
||||
addr_len = 0;
|
||||
if ((mSocket = usrsctp_accept(mMasterSocket, nullptr, &addr_len)) ==
|
||||
nullptr) {
|
||||
DC_ERROR(("***Failed accept"));
|
||||
return false;
|
||||
}
|
||||
|
||||
{
|
||||
MutexAutoLock lock(mLock);
|
||||
SetState(DataChannelConnectionState::Open);
|
||||
}
|
||||
|
||||
struct linger l;
|
||||
l.l_onoff = 1;
|
||||
l.l_linger = 0;
|
||||
if (usrsctp_setsockopt(mSocket, SOL_SOCKET, SO_LINGER, (const void*)&l,
|
||||
(socklen_t)sizeof(struct linger)) < 0) {
|
||||
DC_WARN(("Couldn't set SO_LINGER on SCTP socket"));
|
||||
}
|
||||
|
||||
// Notify Connection open
|
||||
// XXX We need to make sure connection sticks around until the message is
|
||||
// delivered
|
||||
DC_DEBUG(("%s: sending ON_CONNECTION for %p", __FUNCTION__, this));
|
||||
Dispatch(do_AddRef(new DataChannelOnMessageAvailable(
|
||||
DataChannelOnMessageAvailable::EventType::OnConnection, this,
|
||||
(DataChannel*)nullptr)));
|
||||
return true;
|
||||
}
|
||||
|
||||
// Blocks! - Don't call this from main thread!
|
||||
bool DataChannelConnection::Connect(const char* addr, unsigned short port) {
|
||||
struct sockaddr_in addr4 = {};
|
||||
struct sockaddr_in6 addr6 = {};
|
||||
|
||||
NS_WARNING_ASSERTION(!NS_IsMainThread(),
|
||||
"Blocks, do not call from main thread!!!");
|
||||
|
||||
/* Acting as the connector */
|
||||
DC_DEBUG(("Connecting to %s, port %u", addr, port));
|
||||
# ifdef HAVE_SIN_LEN
|
||||
addr4.sin_len = sizeof(struct sockaddr_in);
|
||||
# endif
|
||||
# ifdef HAVE_SIN6_LEN
|
||||
addr6.sin6_len = sizeof(struct sockaddr_in6);
|
||||
# endif
|
||||
addr4.sin_family = AF_INET;
|
||||
addr6.sin6_family = AF_INET6;
|
||||
addr4.sin_port = htons(port);
|
||||
addr6.sin6_port = htons(port);
|
||||
{
|
||||
MutexAutoLock lock(mLock);
|
||||
SetState(DataChannelConnectionState::Connecting);
|
||||
}
|
||||
# if !defined(__Userspace_os_Windows)
|
||||
if (inet_pton(AF_INET6, addr, &addr6.sin6_addr) == 1) {
|
||||
if (usrsctp_connect(mMasterSocket,
|
||||
reinterpret_cast<struct sockaddr*>(&addr6),
|
||||
sizeof(struct sockaddr_in6)) < 0) {
|
||||
DC_ERROR(("*** Failed userspace_connect"));
|
||||
return false;
|
||||
}
|
||||
} else if (inet_pton(AF_INET, addr, &addr4.sin_addr) == 1) {
|
||||
if (usrsctp_connect(mMasterSocket,
|
||||
reinterpret_cast<struct sockaddr*>(&addr4),
|
||||
sizeof(struct sockaddr_in)) < 0) {
|
||||
DC_ERROR(("*** Failed userspace_connect"));
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
DC_ERROR(("*** Illegal destination address."));
|
||||
}
|
||||
# else
|
||||
{
|
||||
struct sockaddr_storage ss;
|
||||
int sslen = sizeof(ss);
|
||||
|
||||
if (!WSAStringToAddressA(const_cast<char*>(addr), AF_INET6, nullptr,
|
||||
(struct sockaddr*)&ss, &sslen)) {
|
||||
addr6.sin6_addr =
|
||||
(reinterpret_cast<struct sockaddr_in6*>(&ss))->sin6_addr;
|
||||
if (usrsctp_connect(mMasterSocket,
|
||||
reinterpret_cast<struct sockaddr*>(&addr6),
|
||||
sizeof(struct sockaddr_in6)) < 0) {
|
||||
DC_ERROR(("*** Failed userspace_connect"));
|
||||
return false;
|
||||
}
|
||||
} else if (!WSAStringToAddressA(const_cast<char*>(addr), AF_INET, nullptr,
|
||||
(struct sockaddr*)&ss, &sslen)) {
|
||||
addr4.sin_addr = (reinterpret_cast<struct sockaddr_in*>(&ss))->sin_addr;
|
||||
if (usrsctp_connect(mMasterSocket,
|
||||
reinterpret_cast<struct sockaddr*>(&addr4),
|
||||
sizeof(struct sockaddr_in)) < 0) {
|
||||
DC_ERROR(("*** Failed userspace_connect"));
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
DC_ERROR(("*** Illegal destination address."));
|
||||
}
|
||||
}
|
||||
# endif
|
||||
|
||||
mSocket = mMasterSocket;
|
||||
|
||||
DC_DEBUG(("connect() succeeded! Entering connected mode"));
|
||||
{
|
||||
MutexAutoLock lock(mLock);
|
||||
SetState(DataChannelConnectionState::Open);
|
||||
}
|
||||
// Notify Connection open
|
||||
// XXX We need to make sure connection sticks around until the message is
|
||||
// delivered
|
||||
DC_DEBUG(("%s: sending ON_CONNECTION for %p", __FUNCTION__, this));
|
||||
Dispatch(do_AddRef(new DataChannelOnMessageAvailable(
|
||||
DataChannelOnMessageAvailable::EventType::OnConnection, this,
|
||||
(DataChannel*)nullptr)));
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
DataChannel* DataChannelConnection::FindChannelByStream(uint16_t stream) {
|
||||
return mChannels.Get(stream).get();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,10 +7,6 @@
|
|||
#ifndef NETWERK_SCTP_DATACHANNEL_DATACHANNEL_H_
|
||||
#define NETWERK_SCTP_DATACHANNEL_DATACHANNEL_H_
|
||||
|
||||
#ifdef MOZ_WEBRTC_SIGNALING
|
||||
# define SCTP_DTLS_SUPPORTED 1
|
||||
#endif
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
|
@ -30,10 +26,8 @@
|
|||
#include "mozilla/net/NeckoTargetHolder.h"
|
||||
#include "DataChannelLog.h"
|
||||
|
||||
#ifdef SCTP_DTLS_SUPPORTED
|
||||
# include "transport/sigslot.h"
|
||||
# include "transport/transportlayer.h" // For TransportLayer::State
|
||||
#endif
|
||||
#include "transport/sigslot.h"
|
||||
#include "transport/transportlayer.h" // For TransportLayer::State
|
||||
|
||||
#ifndef EALREADY
|
||||
# define EALREADY WSAEALREADY
|
||||
|
|
@ -120,12 +114,8 @@ class QueuedDataMessage {
|
|||
};
|
||||
|
||||
// One per PeerConnection
|
||||
class DataChannelConnection final : public net::NeckoTargetHolder
|
||||
#ifdef SCTP_DTLS_SUPPORTED
|
||||
,
|
||||
public sigslot::has_slots<>
|
||||
#endif
|
||||
{
|
||||
class DataChannelConnection final : public net::NeckoTargetHolder,
|
||||
public sigslot::has_slots<> {
|
||||
friend class DataChannel;
|
||||
friend class DataChannelOnMessageAvailable;
|
||||
friend class DataChannelConnectRunnable;
|
||||
|
|
@ -182,15 +172,7 @@ class DataChannelConnection final : public net::NeckoTargetHolder
|
|||
|
||||
void AppendStatsToReport(const UniquePtr<dom::RTCStatsCollection>& aReport,
|
||||
const DOMHighResTimeStamp aTimestamp) const;
|
||||
#ifdef ALLOW_DIRECT_SCTP_LISTEN_CONNECT
|
||||
// These block; they require something to decide on listener/connector
|
||||
// (though you can do simultaneous Connect()). Do not call these from
|
||||
// the main thread!
|
||||
bool Listen(unsigned short port);
|
||||
bool Connect(const char* addr, unsigned short port);
|
||||
#endif
|
||||
|
||||
#ifdef SCTP_DTLS_SUPPORTED
|
||||
bool ConnectToTransport(const std::string& aTransportId, const bool aClient,
|
||||
const uint16_t aLocalPort,
|
||||
const uint16_t aRemotePort);
|
||||
|
|
@ -198,7 +180,6 @@ class DataChannelConnection final : public net::NeckoTargetHolder
|
|||
TransportLayer::State aState);
|
||||
void CompleteConnect();
|
||||
void SetSignals(const std::string& aTransportId);
|
||||
#endif
|
||||
|
||||
[[nodiscard]] already_AddRefed<DataChannel> Open(
|
||||
const nsACString& label, const nsACString& protocol,
|
||||
|
|
@ -235,10 +216,8 @@ class DataChannelConnection final : public net::NeckoTargetHolder
|
|||
|
||||
bool SendDeferredMessages() MOZ_REQUIRES(mLock);
|
||||
|
||||
#ifdef SCTP_DTLS_SUPPORTED
|
||||
int SctpDtlsOutput(void* addr, void* buffer, size_t length, uint8_t tos,
|
||||
uint8_t set_df);
|
||||
#endif
|
||||
|
||||
bool InShutdown() const {
|
||||
#ifdef MOZ_DIAGNOSTIC_ASSERT_ENABLED
|
||||
|
|
@ -296,12 +275,10 @@ class DataChannelConnection final : public net::NeckoTargetHolder
|
|||
static int OnThresholdEvent(struct socket* sock, uint32_t sb_free,
|
||||
void* ulp_info);
|
||||
|
||||
#ifdef SCTP_DTLS_SUPPORTED
|
||||
static void DTLSConnectThread(void* data);
|
||||
void SendPacket(std::unique_ptr<MediaPacket>&& packet);
|
||||
void SctpDtlsInput(const std::string& aTransportId,
|
||||
const MediaPacket& packet);
|
||||
#endif
|
||||
DataChannel* FindChannelByStream(uint16_t stream) MOZ_REQUIRES(mLock);
|
||||
uint16_t FindFreeStream() const MOZ_REQUIRES(mLock);
|
||||
bool RequestMoreStreams(int32_t aNeeded = 16) MOZ_REQUIRES(mLock);
|
||||
|
|
@ -373,7 +350,6 @@ class DataChannelConnection final : public net::NeckoTargetHolder
|
|||
void HandleNotification(const union sctp_notification* notif, size_t n)
|
||||
MOZ_REQUIRES(mLock);
|
||||
|
||||
#ifdef SCTP_DTLS_SUPPORTED
|
||||
bool IsSTSThread() const {
|
||||
bool on = false;
|
||||
if (mSTS) {
|
||||
|
|
@ -381,7 +357,6 @@ class DataChannelConnection final : public net::NeckoTargetHolder
|
|||
}
|
||||
return on;
|
||||
}
|
||||
#endif
|
||||
|
||||
mutable Mutex mLock;
|
||||
// Avoid cycles with PeerConnectionImpl
|
||||
|
|
@ -420,12 +395,10 @@ class DataChannelConnection final : public net::NeckoTargetHolder
|
|||
DataChannelConnectionState mState MOZ_GUARDED_BY(mLock) =
|
||||
DataChannelConnectionState::Closed;
|
||||
|
||||
#ifdef SCTP_DTLS_SUPPORTED
|
||||
std::string mTransportId;
|
||||
bool mConnectedToTransportHandler = false;
|
||||
RefPtr<MediaTransportHandler> mTransportHandler;
|
||||
nsCOMPtr<nsIEventTarget> mSTS;
|
||||
#endif
|
||||
uint16_t mLocalPort = 0; // Accessed from connect thread
|
||||
uint16_t mRemotePort = 0;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue