Fix thread pool unref issue.

Tests were silently failing since f56309d...

Since the eio_watcher is now not counted in the list of active watchers, we
need to explicitly tell the ev_loop not to exit when entering the thread
pool.
v0.7.4-release
Ryan 2009-06-23 11:27:18 +02:00
parent b9f3ae23cf
commit 0e67b34c27
2 changed files with 7 additions and 1 deletions

View File

@ -34,7 +34,8 @@ using namespace node;
Local<Function> l = Local<Function>::Cast(last_arg); \
callback = new Persistent<Function>(); \
*callback = Persistent<Function>::New(l); \
}
} \
ev_ref(EV_DEFAULT_UC);
#define CALL_CALLBACK_PTR(req, argc, argv) \
do { \
@ -47,6 +48,7 @@ do { \
node::FatalException(try_catch); \
delete callback; \
} \
ev_unref(EV_DEFAULT_UC); \
} while(0)
#define DEFINE_SIMPLE_CB(name) \

View File

@ -211,6 +211,8 @@ Connection::Connect (const Arguments& args)
}
connection->opening = true;
ev_ref(EV_DEFAULT_UC);
#ifdef __APPLE__
/* HACK: Bypass the thread pool and do it sync on Macintosh.
@ -273,6 +275,8 @@ AddressDefaultToIPv4 (struct addrinfo *address_list)
int
Connection::AfterResolve (eio_req *req)
{
ev_unref(EV_DEFAULT_UC);
Connection *connection = static_cast<Connection*> (req->data);
struct addrinfo *address = NULL,
*address_list = static_cast<struct addrinfo *>(req->ptr2);