diff --git a/MAC/APL/StationCU/src/ClockControl/ClockControl.cc b/MAC/APL/StationCU/src/ClockControl/ClockControl.cc index 5d4547dd7574f0b0458179807d792755ef059942..2aa9b7a38d46905029adacef4f8d444e78e26e9b 100644 --- a/MAC/APL/StationCU/src/ClockControl/ClockControl.cc +++ b/MAC/APL/StationCU/src/ClockControl/ClockControl.cc @@ -713,9 +713,14 @@ GCFEvent::TResult ClockControl::setClock_state(GCFEvent& event, } case RSP_UPDCLOCK: { - CLKCTRLSetClockAckEvent response; - response.status = CLKCTRL_NO_ERR; - itsLastCommandClient->send(response); + if (itsLastCommandClient) { + CLKCTRLSetClockAckEvent response; + response.status = CLKCTRL_NO_ERR; + itsLastCommandClient->send(response); + LOG_DEBUG("Informed client of clock update"); + } else { + LOG_WARN("Client disconnected, so could not ack clock update"); + } LOG_INFO_STR ("Received clock update, going to operational state"); TRAN(ClockControl::active_state); // go to next state. return (GCFEvent::NEXT_STATE); @@ -1213,6 +1218,10 @@ void ClockControl::_disconnectedHandler(GCFPortInterface& port) TRAN (ClockControl::connect2RSP_state); } else { + if (&port == itsLastCommandClient) { + itsLastCommandClient = 0; + } + itsClientList.remove(&port); } }