You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the bug
Setting and unsetting a behn timer from a gall agent is ship dependent. src.bowl is relevant to canceling timers, in addition to the given wire. Only the ship associated with a timer's wire can unset that timer.
To Reproduce
Steps to reproduce the behaviour: mildly difficult
reference +timers to see the timer still exists and ~fun is written in the wire for it
Expected behaviour
Canceling a timer with the same wire used to set it would work regardless of the ship in src.bowl.
Screenshots
System (please supply the following information, if relevant):
412K
Additional context
In designing a timer server agent for %chess we had to make a compromise. Because the wire can be insufficient for cancelling a timer, adding a timer-id into state was necessary. In our specific case, the server agent's host ship would set a behn timer, and then a poke from another ship would trigger the timer cancel. However, because the ship in src.bowl actually matters, we had to add to our state to cancel the timer somewhere other than on-poke where the src.bowl matched the ship the timer was associated with.
I believe this is because the duct is used throughout the process of timer setting and unsetting within behn, making the ship source relevant. Whether that can be changed or not, the larger issue is this fact is hidden in Userspace and causes lots of confusion.
This is an awful bug. Thank you for the detailed report. I hope the bug can be fixed without deep changes to Gall, but it might require a bigger effort to clean up Gall's duct handling generally.
Describe the bug
Setting and unsetting a
behn
timer from a gall agent is ship dependent.src.bowl
is relevant to canceling timers, in addition to the givenwire
. Only the ship associated with a timer'swire
can unset that timer.To Reproduce
Steps to reproduce the behaviour: mildly difficult
+timers
to see the timer still exists and ~fun is written in thewire
for itExpected behaviour
Canceling a timer with the same
wire
used to set it would work regardless of the ship insrc.bowl
.Screenshots
System (please supply the following information, if relevant):
Additional context
In designing a timer server agent for %chess we had to make a compromise. Because the
wire
can be insufficient for cancelling a timer, adding a timer-id into state was necessary. In our specific case, the server agent's host ship would set a behn timer, and then a poke from another ship would trigger the timer cancel. However, because the ship insrc.bowl
actually matters, we had to add to our state to cancel the timer somewhere other thanon-poke
where thesrc.bowl
matched the ship the timer was associated with.I believe this is because the
duct
is used throughout the process of timer setting and unsetting withinbehn
, making the ship source relevant. Whether that can be changed or not, the larger issue is this fact is hidden in Userspace and causes lots of confusion.Notify maintainers
@joemfb, @belisarius222, @philipcmonk
The text was updated successfully, but these errors were encountered: