mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Backed out changeset f3c055585a4f (bug 843857) for B2G mochitest bustage.
This commit is contained in:
parent
2163779703
commit
6c0a308b3e
@ -174,9 +174,6 @@ public:
|
|||||||
RefPtr<UnixSocketConsumer> mConsumer;
|
RefPtr<UnixSocketConsumer> mConsumer;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void FireSocketError();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* libevent triggered functions that reads data from socket when available and
|
* libevent triggered functions that reads data from socket when available and
|
||||||
* guarenteed non-blocking. Only to be called on IO thread.
|
* guarenteed non-blocking. Only to be called on IO thread.
|
||||||
@ -489,48 +486,30 @@ void ShutdownSocketTask::Run()
|
|||||||
NS_ENSURE_SUCCESS_VOID(rv);
|
NS_ENSURE_SUCCESS_VOID(rv);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
UnixSocketImpl::FireSocketError()
|
|
||||||
{
|
|
||||||
MOZ_ASSERT(!NS_IsMainThread());
|
|
||||||
|
|
||||||
// Clean up watchers, statuses, fds
|
|
||||||
mReadWatcher.StopWatchingFileDescriptor();
|
|
||||||
mWriteWatcher.StopWatchingFileDescriptor();
|
|
||||||
mConnectionStatus = SOCKET_DISCONNECTED;
|
|
||||||
mFd.reset(-1);
|
|
||||||
|
|
||||||
// Tell the main thread we've errored
|
|
||||||
nsRefPtr<OnSocketEventTask> t =
|
|
||||||
new OnSocketEventTask(this, OnSocketEventTask::CONNECT_ERROR);
|
|
||||||
NS_DispatchToMainThread(t);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
UnixSocketImpl::Accept()
|
UnixSocketImpl::Accept()
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(!NS_IsMainThread());
|
MOZ_ASSERT(!NS_IsMainThread());
|
||||||
MOZ_ASSERT(mConnector);
|
|
||||||
|
if (!mConnector) {
|
||||||
|
NS_WARNING("No connector object available!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// This will set things we don't particularly care about, but it will hand
|
// This will set things we don't particularly care about, but it will hand
|
||||||
// back the correct structure size which is what we do care about.
|
// back the correct structure size which is what we do care about.
|
||||||
if (!mConnector->CreateAddr(true, mAddrSize, mAddr, nullptr)) {
|
if (!mConnector->CreateAddr(true, mAddrSize, mAddr, nullptr)) {
|
||||||
NS_WARNING("Cannot create socket address!");
|
NS_WARNING("Cannot create socket address!");
|
||||||
FireSocketError();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mFd.get() < 0) {
|
if (mFd.get() < 0) {
|
||||||
mFd = mConnector->Create();
|
mFd = mConnector->Create();
|
||||||
if (mFd.get() < 0) {
|
if (mFd.get() < 0) {
|
||||||
NS_WARNING("Cannot create socket fd!");
|
|
||||||
FireSocketError();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!SetSocketFlags()) {
|
if (!SetSocketFlags()) {
|
||||||
NS_WARNING("Cannot set socket flags!");
|
|
||||||
FireSocketError();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -538,7 +517,6 @@ UnixSocketImpl::Accept()
|
|||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
CHROMIUM_LOG("...bind(%d) gave errno %d", mFd.get(), errno);
|
CHROMIUM_LOG("...bind(%d) gave errno %d", mFd.get(), errno);
|
||||||
#endif
|
#endif
|
||||||
FireSocketError();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -546,13 +524,15 @@ UnixSocketImpl::Accept()
|
|||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
CHROMIUM_LOG("...listen(%d) gave errno %d", mFd.get(), errno);
|
CHROMIUM_LOG("...listen(%d) gave errno %d", mFd.get(), errno);
|
||||||
#endif
|
#endif
|
||||||
FireSocketError();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mConnector->SetUpListenSocket(mFd)) {
|
if (!mConnector->SetUpListenSocket(mFd)) {
|
||||||
NS_WARNING("Could not set up listen socket!");
|
NS_WARNING("Could not set up listen socket!");
|
||||||
FireSocketError();
|
nsRefPtr<OnSocketEventTask> t =
|
||||||
|
new OnSocketEventTask(this, OnSocketEventTask::CONNECT_ERROR);
|
||||||
|
NS_DispatchToMainThread(t);
|
||||||
|
mConnectionStatus = SOCKET_DISCONNECTED;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -565,13 +545,15 @@ void
|
|||||||
UnixSocketImpl::Connect()
|
UnixSocketImpl::Connect()
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(!NS_IsMainThread());
|
MOZ_ASSERT(!NS_IsMainThread());
|
||||||
MOZ_ASSERT(mConnector);
|
|
||||||
|
if (!mConnector) {
|
||||||
|
NS_WARNING("No connector object available!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (mFd.get() < 0) {
|
if (mFd.get() < 0) {
|
||||||
mFd = mConnector->Create();
|
mFd = mConnector->Create();
|
||||||
if (mFd.get() < 0) {
|
if (mFd.get() < 0) {
|
||||||
NS_WARNING("Cannot create socket fd!");
|
|
||||||
FireSocketError();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -580,14 +562,15 @@ UnixSocketImpl::Connect()
|
|||||||
|
|
||||||
if (!mConnector->CreateAddr(false, mAddrSize, mAddr, mAddress.get())) {
|
if (!mConnector->CreateAddr(false, mAddrSize, mAddr, mAddress.get())) {
|
||||||
NS_WARNING("Cannot create socket address!");
|
NS_WARNING("Cannot create socket address!");
|
||||||
FireSocketError();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Select non-blocking IO.
|
// Select non-blocking IO.
|
||||||
if (-1 == fcntl(mFd.get(), F_SETFL, O_NONBLOCK)) {
|
if (-1 == fcntl(mFd.get(), F_SETFL, O_NONBLOCK)) {
|
||||||
NS_WARNING("Cannot set nonblock!");
|
nsRefPtr<OnSocketEventTask> t =
|
||||||
FireSocketError();
|
new OnSocketEventTask(this, OnSocketEventTask::CONNECT_ERROR);
|
||||||
|
NS_DispatchToMainThread(t);
|
||||||
|
mConnectionStatus = SOCKET_DISCONNECTED;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -600,12 +583,20 @@ UnixSocketImpl::Connect()
|
|||||||
int current_opts = fcntl(mFd.get(), F_GETFL, 0);
|
int current_opts = fcntl(mFd.get(), F_GETFL, 0);
|
||||||
if (-1 == current_opts) {
|
if (-1 == current_opts) {
|
||||||
NS_WARNING("Cannot get socket opts!");
|
NS_WARNING("Cannot get socket opts!");
|
||||||
FireSocketError();
|
mFd.reset(-1);
|
||||||
|
nsRefPtr<OnSocketEventTask> t =
|
||||||
|
new OnSocketEventTask(this, OnSocketEventTask::CONNECT_ERROR);
|
||||||
|
NS_DispatchToMainThread(t);
|
||||||
|
mConnectionStatus = SOCKET_DISCONNECTED;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (-1 == fcntl(mFd.get(), F_SETFL, current_opts & ~O_NONBLOCK)) {
|
if (-1 == fcntl(mFd.get(), F_SETFL, current_opts & ~O_NONBLOCK)) {
|
||||||
NS_WARNING("Cannot set socket opts to blocking!");
|
NS_WARNING("Cannot set socket opts to blocking!");
|
||||||
FireSocketError();
|
mFd.reset(-1);
|
||||||
|
nsRefPtr<OnSocketEventTask> t =
|
||||||
|
new OnSocketEventTask(this, OnSocketEventTask::CONNECT_ERROR);
|
||||||
|
NS_DispatchToMainThread(t);
|
||||||
|
mConnectionStatus = SOCKET_DISCONNECTED;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -625,19 +616,20 @@ UnixSocketImpl::Connect()
|
|||||||
#if DEBUG
|
#if DEBUG
|
||||||
CHROMIUM_LOG("Socket connect errno=%d\n", errno);
|
CHROMIUM_LOG("Socket connect errno=%d\n", errno);
|
||||||
#endif
|
#endif
|
||||||
FireSocketError();
|
mFd.reset(-1);
|
||||||
|
nsRefPtr<OnSocketEventTask> t =
|
||||||
|
new OnSocketEventTask(this, OnSocketEventTask::CONNECT_ERROR);
|
||||||
|
NS_DispatchToMainThread(t);
|
||||||
|
mConnectionStatus = SOCKET_DISCONNECTED;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!SetSocketFlags()) {
|
if (!SetSocketFlags()) {
|
||||||
NS_WARNING("Cannot set socket flags!");
|
|
||||||
FireSocketError();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mConnector->SetUp(mFd)) {
|
if (!mConnector->SetUp(mFd)) {
|
||||||
NS_WARNING("Could not set up socket!");
|
NS_WARNING("Could not set up socket!");
|
||||||
FireSocketError();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -870,19 +862,30 @@ UnixSocketImpl::OnFileCanWriteWithoutBlocking(int aFd)
|
|||||||
|
|
||||||
if (ret || error) {
|
if (ret || error) {
|
||||||
NS_WARNING("getsockopt failure on async socket connect!");
|
NS_WARNING("getsockopt failure on async socket connect!");
|
||||||
FireSocketError();
|
mFd.reset(-1);
|
||||||
|
nsRefPtr<OnSocketEventTask> t =
|
||||||
|
new OnSocketEventTask(this, OnSocketEventTask::CONNECT_ERROR);
|
||||||
|
NS_DispatchToMainThread(t);
|
||||||
|
mConnectionStatus = SOCKET_DISCONNECTED;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!SetSocketFlags()) {
|
if (!SetSocketFlags()) {
|
||||||
NS_WARNING("Cannot set socket flags!");
|
mFd.reset(-1);
|
||||||
FireSocketError();
|
nsRefPtr<OnSocketEventTask> t =
|
||||||
|
new OnSocketEventTask(this, OnSocketEventTask::CONNECT_ERROR);
|
||||||
|
NS_DispatchToMainThread(t);
|
||||||
|
mConnectionStatus = SOCKET_DISCONNECTED;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mConnector->SetUp(mFd)) {
|
if (!mConnector->SetUp(mFd)) {
|
||||||
NS_WARNING("Could not set up socket!");
|
NS_WARNING("Could not set up socket!");
|
||||||
FireSocketError();
|
mFd.reset(-1);
|
||||||
|
nsRefPtr<OnSocketEventTask> t =
|
||||||
|
new OnSocketEventTask(this, OnSocketEventTask::CONNECT_ERROR);
|
||||||
|
NS_DispatchToMainThread(t);
|
||||||
|
mConnectionStatus = SOCKET_DISCONNECTED;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user