| 1 | --- epoll_reactor.hpp 2011-10-11 10:28:00.000000000 +0800
|
|---|
| 2 | +++ epoll_reactor.hpp.new 2011-10-11 10:27:41.000000000 +0800
|
|---|
| 3 | @@ -65,7 +65,7 @@
|
|---|
| 4 | epoll_reactor(boost::asio::io_service& io_service)
|
|---|
| 5 | : boost::asio::detail::service_base<epoll_reactor<Own_Thread> >(io_service),
|
|---|
| 6 | mutex_(),
|
|---|
| 7 | - epoll_fd_(do_epoll_create()),
|
|---|
| 8 | + epoll_fd_(-1),
|
|---|
| 9 | wait_in_progress_(false),
|
|---|
| 10 | interrupter_(),
|
|---|
| 11 | read_op_queue_(),
|
|---|
| 12 | @@ -77,6 +77,8 @@
|
|---|
| 13 | shutdown_(false),
|
|---|
| 14 | need_epoll_wait_(true)
|
|---|
| 15 | {
|
|---|
| 16 | + epoll_fd_ = do_epoll_create();
|
|---|
| 17 | +
|
|---|
| 18 | // Start the reactor's internal thread only if needed.
|
|---|
| 19 | if (Own_Thread)
|
|---|
| 20 | {
|
|---|
| 21 | @@ -96,7 +98,9 @@
|
|---|
| 22 | ~epoll_reactor()
|
|---|
| 23 | {
|
|---|
| 24 | shutdown_service();
|
|---|
| 25 | - close(epoll_fd_);
|
|---|
| 26 | +
|
|---|
| 27 | + if (epoll_fd_ != -1)
|
|---|
| 28 | + close(epoll_fd_);
|
|---|
| 29 | }
|
|---|
| 30 |
|
|---|
| 31 | // Destroy all user-defined handler objects owned by the service.
|
|---|