diff options
author | kobica <kobica@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2005-11-23 01:50:11 +0000 |
---|---|---|
committer | kobica <kobica@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2005-11-23 01:50:11 +0000 |
commit | 3ce4c3eff22f49414e64e0413b8d703225bf2f19 (patch) | |
tree | cbc60d083528f86eaa929877628206cd87aef02a | |
parent | 508fb14b29491d4c7a70f834eb9b6e77f85d5b3a (diff) | |
download | ATCD-3ce4c3eff22f49414e64e0413b8d703225bf2f19.tar.gz |
ChangeLogTag:Tue Nov 22 17:42:13 2005 Kobi Cohen-Arazi <kobi.cohenarazi at gmail dot com>
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | THANKS | 3 | ||||
-rw-r--r-- | ace/Select_Reactor_T.cpp | 11 |
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 @@ -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); |