summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkobica <kobica@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2005-11-23 01:50:11 +0000
committerkobica <kobica@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2005-11-23 01:50:11 +0000
commit3ce4c3eff22f49414e64e0413b8d703225bf2f19 (patch)
treecbc60d083528f86eaa929877628206cd87aef02a
parent508fb14b29491d4c7a70f834eb9b6e77f85d5b3a (diff)
downloadATCD-3ce4c3eff22f49414e64e0413b8d703225bf2f19.tar.gz
ChangeLogTag:Tue Nov 22 17:42:13 2005 Kobi Cohen-Arazi <kobi.cohenarazi at gmail dot com>
-rw-r--r--ChangeLog9
-rw-r--r--THANKS3
-rw-r--r--ace/Select_Reactor_T.cpp11
3 files changed, 21 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 55595b191b3..cc0e4fcda68 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Tue Nov 22 17:42:13 2005 Kobi Cohen-Arazi <kobi.cohenarazi at gmail dot com>
+
+ * ace/Select_Reactor_T.cpp (dispatch):
+ Fixed a bug which derived from bug #1890. active_handle_count
+ must be updated when state is changed. Every time some handler remove
+ add or suspend itself of another handle, state is changed, and that
+ should be reflected in the active_handle_count.
+ Thanks for Vadim Iosevich <viosevich at gmail dot com>
+
Tue Nov 22 18:27:30 2005 Steve Huston <shuston@riverace.com>
* m4/tls.m4: Correct botched assignment to ace_TLS_CPPFLAGS when
diff --git a/THANKS b/THANKS
index 7f10349bae9..a0c91f3b5ea 100644
--- a/THANKS
+++ b/THANKS
@@ -1248,7 +1248,7 @@ Wayne Erchak <wayne at stentor dot com>
Yew Khong See <seeyk at yahoo dot com>
Greg Thompson <gregt at ot dot com dot au>
Mike Pyle <mike dot pyle at burning-glass dot com>
-Kobi Cohen-Arazi <kobi-co at barak-online dot net>
+Kobi Cohen-Arazi <kobi.cohenarazi at gmail dot com>
Israel Illescas Gomez <illescas at dycsa dot es>
Brodie Thiesfield <brodie dot thiesfield at activesky dot com>
Erik Toubro Nielsen <enielsen at mdsproteomics dot dk>
@@ -2037,6 +2037,7 @@ David Faure <dfaure at klaralvdalens-datakonsult dot se>
Robert Hancock <hancockr at shaw dot ca>
Peter Oslej <peter dot oslej at vrm dot sk>
Yongming Wang <wangym at gmail dot com>
+Vadim Iosevich <viosevich at gmail dot com>
I would particularly like to thank Paul Stephenson, who worked with me
at Ericsson in the early 1990's. Paul devised the recursive Makefile
diff --git a/ace/Select_Reactor_T.cpp b/ace/Select_Reactor_T.cpp
index c98763f6022..5901e2b7b2e 100644
--- a/ace/Select_Reactor_T.cpp
+++ b/ace/Select_Reactor_T.cpp
@@ -1201,7 +1201,7 @@ ACE_Select_Reactor_T<ACE_SELECT_REACTOR_TOKEN>::dispatch_io_set
// clear the bit from that dispatch mask,
// so when we need to restart the iteration (rebuilding the iterator...)
- // we will not dispatch the already dipatched handlers
+ // we will not dispatch the already dispatched handlers
this->clear_dispatch_mask (handle, mask);
if (this->state_changed_)
@@ -1354,6 +1354,15 @@ ACE_Select_Reactor_T<ACE_SELECT_REACTOR_TOKEN>::dispatch
io_handlers_dispatched) == -1)
// State has changed, so exit loop.
break;
+
+ // if state changed, we need to re-eval active_handle_count,
+ // so we will not end with an endless loop
+ if (this->state_changed_)
+ {
+ active_handle_count = this->dispatch_set_.rd_mask_.num_set ()
+ + this->dispatch_set_.wr_mask_.num_set ()
+ + this->dispatch_set_.ex_mask_.num_set ();
+ }
}
while (active_handle_count > 0);