diff options
author | eutarass | 2009-09-20 05:13:09 +0000 |
---|---|---|
committer | eutarass | 2009-09-20 05:13:09 +0000 |
commit | 7dca638d516bd603b149d7f76dff8c532d07ed1d (patch) | |
tree | 98a7c31685c522e4b2480c284670841958efc5f0 | |
parent | 053c77bc61ed569b64bbbee0435f48c88f820aa7 (diff) | |
download | org.eclipse.tcf.agent-7dca638d516bd603b149d7f76dff8c532d07ed1d.tar.gz org.eclipse.tcf.agent-7dca638d516bd603b149d7f76dff8c532d07ed1d.tar.xz org.eclipse.tcf.agent-7dca638d516bd603b149d7f76dff8c532d07ed1d.zip |
TCF Agent: Fixed: asynchronous I/O operation AsyncReqWaitpid can return wrong error code. As result, the agent can cause high CPU utilization when it is supposed to be idle.
-rw-r--r-- | asyncreq.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -121,7 +121,7 @@ static void * worker_thread_handler(void * x) { break; case AsyncReqConnect: /* Connect to socket */ - req->u.acc.rval = connect(req->u.con.sock, req->u.con.addr, req->u.con.addrlen); + req->u.con.rval = connect(req->u.con.sock, req->u.con.addr, req->u.con.addrlen); if (req->u.con.rval == -1) { req->error = errno; assert(req->error); @@ -134,7 +134,7 @@ static void * worker_thread_handler(void * x) { #else case AsyncReqWaitpid: /* Wait for process change */ req->u.wpid.rval = waitpid(req->u.wpid.pid, &req->u.wpid.status, req->u.wpid.options); - if (req->u.con.rval == -1) { + if (req->u.wpid.rval == -1) { req->error = errno; assert(req->error); } @@ -147,7 +147,7 @@ static void * worker_thread_handler(void * x) { tv.tv_usec = req->u.select.timeout.tv_nsec / 1000; req->u.select.rval = select(req->u.select.nfds, &req->u.select.readfds, &req->u.select.writefds, &req->u.select.errorfds, &tv); - if (req->u.con.rval == -1) { + if (req->u.select.rval == -1) { req->error = errno; assert(req->error); } |