summaryrefslogtreecommitdiff
path: root/java/src/IceInternal/Network.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/IceInternal/Network.java')
-rw-r--r--java/src/IceInternal/Network.java23
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;
+ }
}