rtems_dhcp.c: dhcp_task() bug? plus question
Gene Smith
gds at chartertn.net
Thu Oct 30 17:00:18 UTC 2008
Looking with a debugger, I noticed that dhcp_task(), which I think just
checks when to do a lease renewal, was exiting the first time it ran.
The only way it should ever exit is if an event is received from the
dhcp failsafe code, which I am not running, indicating the interface has
gone down. In the task, the function rtems_event_receive() would wait
for a second and return, as it should. But the check was for event_out
to contain bit RTEMS_EVENT_0. But since no event actually was received
(it really did time out) the event_out was never set by
rtems_event_received() and contained a random value.
The solution I think is to
1) Initialize event_out to 0 when it is declared or
2) Check the return on rtems_event() !RTEMS_TIMEOUT and exit on that
condition.
Right now I am doing the 2nd option.
I will submit a patch in bugzilla if that seem appropriate.
My question is why does this task poll every seconds? Seems like it
could be a minute or more since leases are usually in terms of hours, I
think, and it renews at the half-way point.
-gene
More information about the users
mailing list