X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=pcep%2Fimpl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fprotocol%2Fpcep%2Fimpl%2Fmessage%2FPcinitiateMessageParser.java;h=544b1dc0596bacf4055f4f4a9788c0a7153ccae0;hb=refs%2Fchanges%2F61%2F2861%2F1;hp=51ec4dcadd55bac607e841b657fc8871b48de972;hpb=0ed83aed44a84723b964b574253a9fa47e767d98;p=bgpcep.git diff --git a/pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PcinitiateMessageParser.java b/pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PcinitiateMessageParser.java index 51ec4dcadd..544b1dc059 100644 --- a/pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PcinitiateMessageParser.java +++ b/pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PcinitiateMessageParser.java @@ -133,7 +133,7 @@ public class PcinitiateMessageParser extends AbstractMessageParser { Object obj; State state = State.Init; - while (!objects.isEmpty()) { + while (!objects.isEmpty() && !state.equals(State.End)) { obj = objects.get(0); switch (state) { @@ -169,24 +169,29 @@ public class PcinitiateMessageParser extends AbstractMessageParser { break; } case MetricIn: - state = State.End; + state = State.IroIn; if (obj instanceof Iro) { builder.setIro((Iro) obj); break; } + case IroIn: + state = State.End; + break; case End: break; default: throw new PCEPDocumentedException("Unknown object", ((UnknownObject) obj).getError()); } - objects.remove(0); + if (!state.equals(State.End)) { + objects.remove(0); + } } builder.setMetrics(metrics); return builder.build(); } private enum State { - Init, EndpointsIn, EroIn, LspaIn, BandwidthIn, MetricIn, End + Init, EndpointsIn, EroIn, LspaIn, BandwidthIn, MetricIn, IroIn, End } @Override