diff --git a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/handler/IpCameraHandler.java b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/handler/IpCameraHandler.java index b96ff172083e..f88f66909484 100644 --- a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/handler/IpCameraHandler.java +++ b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/handler/IpCameraHandler.java @@ -252,12 +252,15 @@ public void channelRead(@Nullable ChannelHandlerContext ctx, @Nullable Object ms incomingJpeg = new byte[bytesToRecieve]; } } + } else { + // 401 errors already handled in pipeline by MyNettyAuthHandler.java + return; } } if (msg instanceof HttpContent) { - if (mjpegUri.equals(requestUrl)) { + HttpContent content = (HttpContent) msg; + if (mjpegUri.equals(requestUrl) && !(content instanceof LastHttpContent)) { // multiple MJPEG stream packets come back as this. - HttpContent content = (HttpContent) msg; byte[] chunkedFrame = new byte[content.content().readableBytes()]; content.content().getBytes(content.content().readerIndex(), chunkedFrame); CameraServlet localServlet = servlet; @@ -265,7 +268,6 @@ public void channelRead(@Nullable ChannelHandlerContext ctx, @Nullable Object ms localServlet.openStreams.queueFrame(chunkedFrame); } } else { - HttpContent content = (HttpContent) msg; // Found some cameras use Content-Type: image/jpg instead of image/jpeg if (contentType.contains("image/jp")) { for (int i = 0; i < content.content().capacity(); i++) {