diff options
Diffstat (limited to 'java/src/IceInternal/Network.java')
-rw-r--r-- | java/src/IceInternal/Network.java | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/java/src/IceInternal/Network.java b/java/src/IceInternal/Network.java index e986ff71e95..a151bb2144a 100644 --- a/java/src/IceInternal/Network.java +++ b/java/src/IceInternal/Network.java @@ -360,12 +360,12 @@ public final class Network break; } - catch(java.io.InterruptedIOException ex) - { - continue; - } catch(java.io.IOException ex) { + if(interrupted(ex)) + { + continue; + } Ice.SocketException se = new Ice.SocketException(); se.initCause(ex); throw se; @@ -385,12 +385,12 @@ public final class Network } } } - catch(java.io.InterruptedIOException ex) - { - continue; - } catch(java.io.IOException ex) { + if(interrupted(ex)) + { + continue; + } Ice.SocketException se = new Ice.SocketException(); se.initCause(ex); throw se; @@ -753,4 +753,11 @@ public final class Network s.append(addr.getPort()); return s.toString(); } + + public static boolean + interrupted(java.io.IOException ex) + { + return ex instanceof java.io.InterruptedIOException || + ex.getMessage().indexOf("Interrupted system call") >= 0; + } } |