From 70e7c39a04c9b74650848113db4611cfc7bc1fb1 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 4 Jun 2020 05:07:37 +0200 Subject: [PATCH] Fix NPE in BMP Empty lists are being squashed to nulls now, make sure we account for this this possiblity. Fixes the following splat: java.lang.NullPointerException: null at org.opendaylight.protocol.bmp.impl.app.BmpRouterPeerImpl.setPeerTables(BmpRouterPeerImpl.java:262) ~[bundleFile:?] at org.opendaylight.protocol.bmp.impl.app.BmpRouterPeerImpl.(BmpRouterPeerImpl.java:145) ~[bundleFile:?] at org.opendaylight.protocol.bmp.impl.app.BmpRouterPeerImpl.createRouterPeer(BmpRouterPeerImpl.java:168) ~[bundleFile:?] at org.opendaylight.protocol.bmp.impl.app.BmpRouterImpl.onPeerUp(BmpRouterImpl.java:249) ~[bundleFile:?] at org.opendaylight.protocol.bmp.impl.app.BmpRouterImpl.onMessage(BmpRouterImpl.java:122) ~[bundleFile:?] at org.opendaylight.protocol.bmp.impl.session.BmpSessionImpl.handleMessage(BmpSessionImpl.java:127) ~[bundleFile:?] at org.opendaylight.protocol.bmp.impl.session.BmpSessionImpl.channelRead0(BmpSessionImpl.java:50) ~[bundleFile:?] at org.opendaylight.protocol.bmp.impl.session.BmpSessionImpl.channelRead0(BmpSessionImpl.java:33) ~[bundleFile:?] Change-Id: I303095aa30f296f0bb77d4d11b6a31ee77494abb Signed-off-by: Robert Varga --- .../bmp/impl/app/BmpRouterPeerImpl.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/bmp/bmp-impl/src/main/java/org/opendaylight/protocol/bmp/impl/app/BmpRouterPeerImpl.java b/bmp/bmp-impl/src/main/java/org/opendaylight/protocol/bmp/impl/app/BmpRouterPeerImpl.java index dd81fb645d..20a0c0fe87 100644 --- a/bmp/bmp-impl/src/main/java/org/opendaylight/protocol/bmp/impl/app/BmpRouterPeerImpl.java +++ b/bmp/bmp-impl/src/main/java/org/opendaylight/protocol/bmp/impl/app/BmpRouterPeerImpl.java @@ -259,17 +259,18 @@ public final class BmpRouterPeerImpl implements BmpRouterPeer { private static Set setPeerTables(final ReceivedOpen open) { final Set tables = Sets.newHashSet(DEFAULT_TABLE); - for (final BgpParameters param : open.getBgpParameters()) { - for (final OptionalCapabilities optCapa : param.getOptionalCapabilities()) { + for (final BgpParameters param : open.nonnullBgpParameters()) { + for (final OptionalCapabilities optCapa : param.nonnullOptionalCapabilities()) { final CParameters cParam = optCapa.getCParameters(); - if (cParam.augmentation(CParameters1.class) == null - || cParam.augmentation(CParameters1.class).getMultiprotocolCapability() == null) { - continue; + if (cParam != null) { + final CParameters1 augment = cParam.augmentation(CParameters1.class); + if (augment != null) { + final MultiprotocolCapability multi = augment.getMultiprotocolCapability(); + if (multi != null) { + tables.add(new TablesKey(multi.getAfi(), multi.getSafi())); + } + } } - final MultiprotocolCapability multi = cParam.augmentation(CParameters1.class) - .getMultiprotocolCapability(); - final TablesKey tt = new TablesKey(multi.getAfi(), multi.getSafi()); - tables.add(tt); } } return tables; -- 2.36.6