зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1569183: Update OnConnected callbacks to specify what type of proxying (if any) is being used, and implement IsProxied based on this information. r=mjf
Differential Revision: https://phabricator.services.mozilla.com/D45186 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
57de6c6130
Коммит
2fe90843a0
|
@ -125,13 +125,13 @@ void WebrtcTCPSocketWrapper::OnRead(nsTArray<uint8_t>&& aReadData) {
|
|||
&WebrtcTCPSocketCallback::OnRead, std::move(aReadData))));
|
||||
}
|
||||
|
||||
void WebrtcTCPSocketWrapper::OnConnected() {
|
||||
void WebrtcTCPSocketWrapper::OnConnected(const nsCString& aProxyType) {
|
||||
MOZ_ASSERT(NS_IsMainThread(), "not on main thread");
|
||||
MOZ_ASSERT(mProxyCallbacks, "webrtc TCP callbacks should be non-null");
|
||||
|
||||
MOZ_ALWAYS_SUCCEEDS(mSocketThread->Dispatch(
|
||||
NewRunnableMethod("WebrtcTCPSocketWrapper::OnConnected", mProxyCallbacks,
|
||||
&WebrtcTCPSocketCallback::OnConnected)));
|
||||
MOZ_ALWAYS_SUCCEEDS(mSocketThread->Dispatch(NewRunnableMethod<nsCString>(
|
||||
"WebrtcTCPSocketWrapper::OnConnected", mProxyCallbacks,
|
||||
&WebrtcTCPSocketCallback::OnConnected, aProxyType)));
|
||||
}
|
||||
|
||||
} // namespace net
|
||||
|
|
|
@ -50,7 +50,7 @@ class WebrtcTCPSocketWrapper : public WebrtcTCPSocketCallback {
|
|||
|
||||
// WebrtcTCPSocketCallback
|
||||
virtual void OnClose(nsresult aReason) override;
|
||||
virtual void OnConnected() override;
|
||||
virtual void OnConnected(const nsCString& aProxyType) override;
|
||||
virtual void OnRead(nsTArray<uint8_t>&& aReadData) override;
|
||||
|
||||
protected:
|
||||
|
|
|
@ -32,7 +32,7 @@ parent:
|
|||
|
||||
child:
|
||||
async OnClose(nsresult aReason);
|
||||
async OnConnected();
|
||||
async OnConnected(nsCString aProxyType);
|
||||
async OnRead(uint8_t[] aReadData);
|
||||
|
||||
async __delete__();
|
||||
|
|
|
@ -231,17 +231,16 @@ NS_IMETHODIMP WebrtcTCPSocket::OnProxyAvailable(nsICancelable* aRequest,
|
|||
nsresult rv;
|
||||
|
||||
if (NS_SUCCEEDED(aResult) && aProxyinfo) {
|
||||
nsCString proxyType;
|
||||
rv = aProxyinfo->GetType(proxyType);
|
||||
rv = aProxyinfo->GetType(mProxyType);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
CloseWithReason(rv);
|
||||
return rv;
|
||||
}
|
||||
|
||||
if (proxyType == "http" || proxyType == "https") {
|
||||
if (mProxyType == "http" || mProxyType == "https") {
|
||||
rv = OpenWithHttpProxy();
|
||||
} else if (proxyType == "socks" || proxyType == "socks4" ||
|
||||
proxyType == "direct") {
|
||||
} else if (mProxyType == "socks" || mProxyType == "socks4" ||
|
||||
mProxyType == "direct") {
|
||||
rv = OpenWithoutHttpProxy(aProxyinfo);
|
||||
}
|
||||
} else {
|
||||
|
@ -452,7 +451,7 @@ void WebrtcTCPSocket::InvokeOnConnected() {
|
|||
|
||||
MOZ_ASSERT(mProxyCallbacks, "webrtc TCP callback should be non-null");
|
||||
|
||||
mProxyCallbacks->OnConnected();
|
||||
mProxyCallbacks->OnConnected(mProxyType);
|
||||
}
|
||||
|
||||
void WebrtcTCPSocket::InvokeOnRead(nsTArray<uint8_t>&& aReadData) {
|
||||
|
|
|
@ -82,6 +82,7 @@ class WebrtcTCPSocket : public nsIHttpUpgradeListener,
|
|||
bool mForceProxy = false;
|
||||
nsCString mLocalAddress;
|
||||
uint16_t mLocalPort = 0;
|
||||
nsCString mProxyType;
|
||||
|
||||
nsresult DoProxyConfigLookup();
|
||||
nsresult OpenWithHttpProxy();
|
||||
|
|
|
@ -17,7 +17,7 @@ class WebrtcTCPSocketCallback {
|
|||
NS_INLINE_DECL_PURE_VIRTUAL_REFCOUNTING
|
||||
|
||||
virtual void OnClose(nsresult aReason) = 0;
|
||||
virtual void OnConnected() = 0;
|
||||
virtual void OnConnected(const nsCString& aProxyType) = 0;
|
||||
virtual void OnRead(nsTArray<uint8_t>&& aReadData) = 0;
|
||||
|
||||
protected:
|
||||
|
|
|
@ -30,11 +30,12 @@ mozilla::ipc::IPCResult WebrtcTCPSocketChild::RecvOnClose(
|
|||
return IPC_OK();
|
||||
}
|
||||
|
||||
mozilla::ipc::IPCResult WebrtcTCPSocketChild::RecvOnConnected() {
|
||||
mozilla::ipc::IPCResult WebrtcTCPSocketChild::RecvOnConnected(
|
||||
const nsCString& aProxyType) {
|
||||
LOG(("WebrtcTCPSocketChild::RecvOnConnected %p\n", this));
|
||||
|
||||
MOZ_ASSERT(mProxyCallbacks, "webrtc TCP callbacks should be non-null");
|
||||
mProxyCallbacks->OnConnected();
|
||||
mProxyCallbacks->OnConnected(aProxyType);
|
||||
|
||||
return IPC_OK();
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ class WebrtcTCPSocketChild : public PWebrtcTCPSocketChild {
|
|||
|
||||
mozilla::ipc::IPCResult RecvOnClose(const nsresult& aReason) override;
|
||||
|
||||
mozilla::ipc::IPCResult RecvOnConnected() override;
|
||||
mozilla::ipc::IPCResult RecvOnConnected(const nsCString& aProxyType) override;
|
||||
|
||||
mozilla::ipc::IPCResult RecvOnRead(nsTArray<uint8_t>&& aReadData) override;
|
||||
|
||||
|
|
|
@ -107,10 +107,10 @@ void WebrtcTCPSocketParent::OnRead(nsTArray<uint8_t>&& aReadData) {
|
|||
}
|
||||
}
|
||||
|
||||
void WebrtcTCPSocketParent::OnConnected() {
|
||||
void WebrtcTCPSocketParent::OnConnected(const nsCString& aProxyType) {
|
||||
LOG(("WebrtcTCPSocketParent::OnConnected %p\n", this));
|
||||
|
||||
if (mChannel && !SendOnConnected()) {
|
||||
if (mChannel && !SendOnConnected(aProxyType)) {
|
||||
CleanupChannel();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ class WebrtcTCPSocketParent : public PWebrtcTCPSocketParent,
|
|||
|
||||
// WebrtcTCPSocketCallback
|
||||
void OnClose(nsresult aReason) override;
|
||||
void OnConnected() override;
|
||||
void OnConnected(const nsCString& aProxyType) override;
|
||||
void OnRead(nsTArray<uint8_t>&& bytes) override;
|
||||
|
||||
void AddIPDLReference() { AddRef(); }
|
||||
|
|
|
@ -246,8 +246,9 @@ void NrTcpSocket::OnClose(nsresult aReason) {
|
|||
DoCallbacks();
|
||||
}
|
||||
|
||||
void NrTcpSocket::OnConnected() {
|
||||
void NrTcpSocket::OnConnected(const nsCString& aProxyType) {
|
||||
r_log(LOG_GENERIC, LOG_DEBUG, "NrTcpSocket::OnConnected %p\n", this);
|
||||
mProxyType = aProxyType;
|
||||
|
||||
DoCallbacks();
|
||||
}
|
||||
|
|
|
@ -86,11 +86,13 @@ class NrTcpSocket : public NrSocketBase, public WebrtcTCPSocketCallback {
|
|||
int listen(int aBacklog) override;
|
||||
int accept(nr_transport_addr* aAddr, nr_socket** aSocket) override;
|
||||
|
||||
bool IsProxied() const override { return true; }
|
||||
bool IsProxied() const override {
|
||||
return mProxyType != "" && mProxyType != "direct";
|
||||
}
|
||||
|
||||
// WebrtcTCPSocketCallback
|
||||
void OnClose(nsresult aReason) override;
|
||||
void OnConnected() override;
|
||||
void OnConnected(const nsCString& aProxyType) override;
|
||||
void OnRead(nsTArray<uint8_t>&& aReadData) override;
|
||||
|
||||
size_t CountUnreadBytes() const;
|
||||
|
@ -107,6 +109,7 @@ class NrTcpSocket : public NrSocketBase, public WebrtcTCPSocketCallback {
|
|||
bool mClosed;
|
||||
|
||||
size_t mReadOffset;
|
||||
nsCString mProxyType;
|
||||
std::list<NrTcpSocketData> mReadQueue;
|
||||
|
||||
std::shared_ptr<NrSocketProxyConfig> mConfig;
|
||||
|
|
|
@ -110,7 +110,7 @@ TEST_F(NrTcpSocketTest, TestConnected) {
|
|||
// still not connected just registered for writes...
|
||||
ASSERT_TRUE(!mConnected);
|
||||
|
||||
mSProxy->OnConnected();
|
||||
mSProxy->OnConnected(NS_LITERAL_CSTRING("http"));
|
||||
|
||||
ASSERT_TRUE(mConnected);
|
||||
}
|
||||
|
|
|
@ -472,7 +472,7 @@ void FakeWebrtcTCPSocket::InvokeOnClose(nsresult aReason) {
|
|||
}
|
||||
|
||||
void FakeWebrtcTCPSocket::InvokeOnConnected() {
|
||||
mProxyCallbacks->OnConnected();
|
||||
mProxyCallbacks->OnConnected(NS_LITERAL_CSTRING("http"));
|
||||
}
|
||||
|
||||
void FakeWebrtcTCPSocket::InvokeOnRead(nsTArray<uint8_t>&& aReadData) {
|
||||
|
@ -494,7 +494,7 @@ class WebrtcTCPSocketTest : public MtransportTest {
|
|||
|
||||
// WebrtcTCPSocketCallback forwards from mCallback
|
||||
void OnClose(nsresult aReason);
|
||||
void OnConnected();
|
||||
void OnConnected(const nsCString& aProxyType);
|
||||
void OnRead(nsTArray<uint8_t>&& aReadData);
|
||||
|
||||
void SetUp() override;
|
||||
|
@ -534,7 +534,7 @@ class WebrtcTCPSocketTestCallback : public WebrtcTCPSocketCallback {
|
|||
|
||||
// WebrtcTCPSocketCallback
|
||||
void OnClose(nsresult aReason) override;
|
||||
void OnConnected() override;
|
||||
void OnConnected(const nsCString& aProxyType) override;
|
||||
void OnRead(nsTArray<uint8_t>&& aReadData) override;
|
||||
|
||||
protected:
|
||||
|
@ -566,7 +566,9 @@ void WebrtcTCPSocketTest::OnRead(nsTArray<uint8_t>&& aReadData) {
|
|||
AppendReadData(aReadData.Elements(), aReadData.Length());
|
||||
}
|
||||
|
||||
void WebrtcTCPSocketTest::OnConnected() { mOnConnectedCalled = true; }
|
||||
void WebrtcTCPSocketTest::OnConnected(const nsCString& aProxyType) {
|
||||
mOnConnectedCalled = true;
|
||||
}
|
||||
|
||||
void WebrtcTCPSocketTest::OnClose(nsresult aReason) { mOnCloseCalled = true; }
|
||||
|
||||
|
@ -614,7 +616,9 @@ void WebrtcTCPSocketTestCallback::OnClose(nsresult aReason) {
|
|||
mTest->OnClose(aReason);
|
||||
}
|
||||
|
||||
void WebrtcTCPSocketTestCallback::OnConnected() { mTest->OnConnected(); }
|
||||
void WebrtcTCPSocketTestCallback::OnConnected(const nsCString& aProxyType) {
|
||||
mTest->OnConnected(aProxyType);
|
||||
}
|
||||
|
||||
void WebrtcTCPSocketTestCallback::OnRead(nsTArray<uint8_t>&& aReadData) {
|
||||
mTest->OnRead(std::move(aReadData));
|
||||
|
|
Загрузка…
Ссылка в новой задаче