Loading dom/network/UDPSocket.cpp +20 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,10 @@ namespace mozilla { namespace dom { NS_IMPL_ISUPPORTS(UDPSocket::ListenerProxy, nsIUDPSocketListener, nsIUDPSocketInternal) NS_IMPL_CYCLE_COLLECTION_CLASS(UDPSocket) NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(UDPSocket, DOMEventTargetHelper) Loading Loading @@ -175,6 +179,11 @@ UDPSocket::CloseWithReason(nsresult aReason) mReadyState = SocketReadyState::Closed; if (mListenerProxy) { mListenerProxy->Disconnect(); mListenerProxy = nullptr; } if (mSocket) { mSocket->Close(); mSocket = nullptr; Loading Loading @@ -430,7 +439,9 @@ UDPSocket::InitLocal(const nsAString& aLocalAddress, } mLocalPort.SetValue(localPort); rv = mSocket->AsyncListen(this); mListenerProxy = new ListenerProxy(this); rv = mSocket->AsyncListen(mListenerProxy); if (NS_FAILED(rv)) { return rv; } Loading Loading @@ -458,7 +469,14 @@ UDPSocket::InitRemote(const nsAString& aLocalAddress, return rv; } rv = sock->Bind(this, NS_ConvertUTF16toUTF8(aLocalAddress), aLocalPort, mAddressReuse, mLoopback); mListenerProxy = new ListenerProxy(this); rv = sock->Bind(mListenerProxy, NS_ConvertUTF16toUTF8(aLocalAddress), aLocalPort, mAddressReuse, mLoopback); if (NS_FAILED(rv)) { return rv; } Loading dom/network/UDPSocket.h +25 −0 Original line number Diff line number Diff line Loading @@ -128,6 +128,30 @@ public: ErrorResult& aRv); private: class ListenerProxy : public nsIUDPSocketListener , public nsIUDPSocketInternal { public: NS_DECL_ISUPPORTS NS_FORWARD_SAFE_NSIUDPSOCKETLISTENER(mSocket) NS_FORWARD_SAFE_NSIUDPSOCKETINTERNAL(mSocket) explicit ListenerProxy(UDPSocket* aSocket) : mSocket(aSocket) { } void Disconnect() { mSocket = nullptr; } private: virtual ~ListenerProxy() {} UDPSocket* mSocket; }; UDPSocket(nsPIDOMWindow* aOwner, const nsCString& aRemoteAddress, const Nullable<uint16_t>& aRemotePort); Loading Loading @@ -176,6 +200,7 @@ private: nsCOMPtr<nsIUDPSocket> mSocket; nsCOMPtr<nsIUDPSocketChild> mSocketChild; nsRefPtr<ListenerProxy> mListenerProxy; struct MulticastCommand { enum CommandType { Join, Leave }; Loading Loading
dom/network/UDPSocket.cpp +20 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,10 @@ namespace mozilla { namespace dom { NS_IMPL_ISUPPORTS(UDPSocket::ListenerProxy, nsIUDPSocketListener, nsIUDPSocketInternal) NS_IMPL_CYCLE_COLLECTION_CLASS(UDPSocket) NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(UDPSocket, DOMEventTargetHelper) Loading Loading @@ -175,6 +179,11 @@ UDPSocket::CloseWithReason(nsresult aReason) mReadyState = SocketReadyState::Closed; if (mListenerProxy) { mListenerProxy->Disconnect(); mListenerProxy = nullptr; } if (mSocket) { mSocket->Close(); mSocket = nullptr; Loading Loading @@ -430,7 +439,9 @@ UDPSocket::InitLocal(const nsAString& aLocalAddress, } mLocalPort.SetValue(localPort); rv = mSocket->AsyncListen(this); mListenerProxy = new ListenerProxy(this); rv = mSocket->AsyncListen(mListenerProxy); if (NS_FAILED(rv)) { return rv; } Loading Loading @@ -458,7 +469,14 @@ UDPSocket::InitRemote(const nsAString& aLocalAddress, return rv; } rv = sock->Bind(this, NS_ConvertUTF16toUTF8(aLocalAddress), aLocalPort, mAddressReuse, mLoopback); mListenerProxy = new ListenerProxy(this); rv = sock->Bind(mListenerProxy, NS_ConvertUTF16toUTF8(aLocalAddress), aLocalPort, mAddressReuse, mLoopback); if (NS_FAILED(rv)) { return rv; } Loading
dom/network/UDPSocket.h +25 −0 Original line number Diff line number Diff line Loading @@ -128,6 +128,30 @@ public: ErrorResult& aRv); private: class ListenerProxy : public nsIUDPSocketListener , public nsIUDPSocketInternal { public: NS_DECL_ISUPPORTS NS_FORWARD_SAFE_NSIUDPSOCKETLISTENER(mSocket) NS_FORWARD_SAFE_NSIUDPSOCKETINTERNAL(mSocket) explicit ListenerProxy(UDPSocket* aSocket) : mSocket(aSocket) { } void Disconnect() { mSocket = nullptr; } private: virtual ~ListenerProxy() {} UDPSocket* mSocket; }; UDPSocket(nsPIDOMWindow* aOwner, const nsCString& aRemoteAddress, const Nullable<uint16_t>& aRemotePort); Loading Loading @@ -176,6 +200,7 @@ private: nsCOMPtr<nsIUDPSocket> mSocket; nsCOMPtr<nsIUDPSocketChild> mSocketChild; nsRefPtr<ListenerProxy> mListenerProxy; struct MulticastCommand { enum CommandType { Join, Leave }; Loading