From: Jérôme Benoit Date: Tue, 8 Apr 2025 10:06:51 +0000 (+0200) Subject: fix: gracefully handle malformed boot notification response X-Git-Tag: ocpp-server@v2.0.6~1 X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=db7e450e595dae12f32520fe3d1a7f1061c3616f;p=e-mobility-charging-stations-simulator.git fix: gracefully handle malformed boot notification response Signed-off-by: Jérôme Benoit --- diff --git a/src/charging-station/ocpp/1.6/OCPP16ResponseService.ts b/src/charging-station/ocpp/1.6/OCPP16ResponseService.ts index be3abd79..553e0ae4 100644 --- a/src/charging-station/ocpp/1.6/OCPP16ResponseService.ts +++ b/src/charging-station/ocpp/1.6/OCPP16ResponseService.ts @@ -508,20 +508,23 @@ export class OCPP16ResponseService extends OCPPResponseService { ): void { if (Object.values(RegistrationStatusEnumType).includes(payload.status)) { chargingStation.bootNotificationResponse = payload - addConfigurationKey( - chargingStation, - OCPP16StandardParametersKey.HeartbeatInterval, - payload.interval.toString(), - {}, - { overwrite: true, save: true } - ) - addConfigurationKey( - chargingStation, - OCPP16StandardParametersKey.HeartBeatInterval, - payload.interval.toString(), - { visible: false }, - { overwrite: true, save: true } - ) + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (payload.interval != null) { + addConfigurationKey( + chargingStation, + OCPP16StandardParametersKey.HeartbeatInterval, + payload.interval.toString(), + {}, + { overwrite: true, save: true } + ) + addConfigurationKey( + chargingStation, + OCPP16StandardParametersKey.HeartBeatInterval, + payload.interval.toString(), + { visible: false }, + { overwrite: true, save: true } + ) + } if (chargingStation.inAcceptedState()) { chargingStation.emit(ChargingStationEvents.accepted) } else if (chargingStation.inPendingState()) { diff --git a/src/charging-station/ocpp/2.0/OCPP20ResponseService.ts b/src/charging-station/ocpp/2.0/OCPP20ResponseService.ts index 6e499d1f..5a4b62b8 100644 --- a/src/charging-station/ocpp/2.0/OCPP20ResponseService.ts +++ b/src/charging-station/ocpp/2.0/OCPP20ResponseService.ts @@ -170,13 +170,16 @@ export class OCPP20ResponseService extends OCPPResponseService { ): void { if (Object.values(RegistrationStatusEnumType).includes(payload.status)) { chargingStation.bootNotificationResponse = payload - addConfigurationKey( - chargingStation, - OCPP20OptionalVariableName.HeartbeatInterval, - payload.interval.toString(), - {}, - { overwrite: true, save: true } - ) + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (payload.interval != null) { + addConfigurationKey( + chargingStation, + OCPP20OptionalVariableName.HeartbeatInterval, + payload.interval.toString(), + {}, + { overwrite: true, save: true } + ) + } if (chargingStation.inAcceptedState()) { chargingStation.emit(ChargingStationEvents.accepted) } else if (chargingStation.inPendingState()) {