From 35e1f5b739231c186d9ff9bc50193cc95c8e4e24 Mon Sep 17 00:00:00 2001 From: Bartosz Firyn Date: Fri, 11 Jan 2013 15:36:56 +0100 Subject: [PATCH] SocketException: Broken pipe when using WebcamStreamer fixes #19 --- .../github/sarxos/webcam/WebcamStreamer.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/webcam-capture/src/main/java/com/github/sarxos/webcam/WebcamStreamer.java b/webcam-capture/src/main/java/com/github/sarxos/webcam/WebcamStreamer.java index f7eb15c2..fd8e5903 100644 --- a/webcam-capture/src/main/java/com/github/sarxos/webcam/WebcamStreamer.java +++ b/webcam-capture/src/main/java/com/github/sarxos/webcam/WebcamStreamer.java @@ -8,6 +8,7 @@ import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket; +import java.net.SocketException; import java.util.concurrent.Executor; import java.util.concurrent.Executors; import java.util.concurrent.ThreadFactory; @@ -123,6 +124,13 @@ public void run() { do { + if (socket.isInputShutdown()) { + break; + } + if (socket.isClosed()) { + break; + } + baos.reset(); ImageIO.write(getImage(), "JPG", baos); @@ -136,7 +144,14 @@ public void run() { bos.write(sb.toString().getBytes()); bos.write(baos.toByteArray()); bos.write(CRLF.getBytes()); - bos.flush(); + + try { + bos.flush(); + } catch (SocketException e) { + if (!socket.isClosed()) { + throw e; + } + } Thread.sleep(getDelay());