]> Piment Noir Git Repositories - e-mobility-charging-stations-simulator.git/commitdiff
fix: gracefully handle malformed boot notification response
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 8 Apr 2025 10:06:51 +0000 (12:06 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 8 Apr 2025 10:06:51 +0000 (12:06 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
src/charging-station/ocpp/1.6/OCPP16ResponseService.ts
src/charging-station/ocpp/2.0/OCPP20ResponseService.ts

index be3abd7976023f4f6924280689962b6cc7a4d04d..553e0ae4096f832e876ab59ca5688dc532875f45 100644 (file)
@@ -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()) {
index 6e499d1f1e2cc35fda553490a587c0781a5a3362..5a4b62b81316026597ee750b8aa148818ef6bcd4 100644 (file)
@@ -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()) {