aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/net/ServerSocket.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/net/ServerSocket.java')
-rw-r--r--libjava/java/net/ServerSocket.java45
1 files changed, 43 insertions, 2 deletions
diff --git a/libjava/java/net/ServerSocket.java b/libjava/java/net/ServerSocket.java
index 0285c12..2d04eac 100644
--- a/libjava/java/net/ServerSocket.java
+++ b/libjava/java/net/ServerSocket.java
@@ -164,9 +164,50 @@ public class ServerSocket
if (bindAddr == null)
bindAddr = InetAddress.ANY_IF;
+ // create socket
impl.create(true);
- impl.bind(bindAddr, port);
- impl.listen(backlog);
+
+ // bind to address/port
+ try
+ {
+ impl.bind(bindAddr, port);
+ }
+ catch (IOException exception)
+ {
+ impl.close();
+ throw exception;
+ }
+ catch (RuntimeException exception)
+ {
+ impl.close();
+ throw exception;
+ }
+ catch (Error error)
+ {
+ impl.close();
+ throw error;
+ }
+
+ // listen on socket
+ try
+ {
+ impl.listen(backlog);
+ }
+ catch (IOException exception)
+ {
+ impl.close();
+ throw exception;
+ }
+ catch (RuntimeException exception)
+ {
+ impl.close();
+ throw exception;
+ }
+ catch (Error error)
+ {
+ impl.close();
+ throw error;
+ }
}
/**