From db7e450e595dae12f32520fe3d1a7f1061c3616f Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Tue, 8 Apr 2025 12:06:51 +0200 Subject: [PATCH] fix: gracefully handle malformed boot notification response MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- .../ocpp/1.6/OCPP16ResponseService.ts | 31 ++++++++++--------- .../ocpp/2.0/OCPP20ResponseService.ts | 17 +++++----- 2 files changed, 27 insertions(+), 21 deletions(-) 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()) { -- 2.43.0