From: Robert Varga Date: Thu, 4 Jun 2020 03:07:37 +0000 (+0200) Subject: Fix NPE in BMP X-Git-Tag: release/aluminium~55 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=70e7c39a04c9b74650848113db4611cfc7bc1fb1;p=bgpcep.git 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 --- 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;