Merge branch 'ipv6' of https://github.com/twaugh/tigervnc into ipv6
diff --git a/java/com/tigervnc/network/Socket.java b/java/com/tigervnc/network/Socket.java
index bcc920d..651dc05 100644
--- a/java/com/tigervnc/network/Socket.java
+++ b/java/com/tigervnc/network/Socket.java
@@ -58,7 +58,6 @@
// Is the remote end on the same machine?
abstract public boolean sameMachine();
- // Was there a "?" in the ConnectionFilter used to accept this Socket?
public void setRequiresQuery() {queryConnection = true;}
public final boolean requiresQuery() {return queryConnection;}
@@ -78,29 +77,3 @@
boolean isShutdown_;
boolean queryConnection;
}
-
-/*
-abstract class ConnectionFilter {
- public abstract boolean verifyConnection(Socket s);
-};
-
-abstract class SocketListener {
- public SocketListener() {
- fd = null; filter = null;
- }
-
- // shutdown() stops the socket from accepting further connections
- public abstract void shutdown();
-
- // accept() returns a new Socket object if there is a connection
- // attempt in progress AND if the connection passes the filter
- // if one is installed. Otherwise, returns 0.
- public abstract Socket accept();
-
- // setFilter() applies the specified filter to all new connections
- public void setFilter(ConnectionFilter f) {filter = f;}
- //public SocketDescriptor getFd() {return fd;}
- protected FileDescriptor fd;
- protected ConnectionFilter filter;
-};
-*/
diff --git a/java/com/tigervnc/network/SocketListener.java b/java/com/tigervnc/network/SocketListener.java
index a1b2c12..a1f5ea1 100644
--- a/java/com/tigervnc/network/SocketListener.java
+++ b/java/com/tigervnc/network/SocketListener.java
@@ -29,18 +29,15 @@
public SocketListener() {}
// shutdown() stops the socket from accepting further connections
- abstract public void shutdown();
+ abstract public void shutdown() throws Exception;
// accept() returns a new Socket object if there is a connection
// attempt in progress AND if the connection passes the filter
// if one is installed. Otherwise, returns 0.
abstract public Socket accept();
- // setFilter() applies the specified filter to all new connections
- //public void setFilter(ConnectionFilter* f) {filter = f;}
public FileDescriptor getFd() {return fd;}
protected FileDescriptor fd;
- //protected ConnectionFilter* filter;
}
diff --git a/java/com/tigervnc/network/TcpListener.java b/java/com/tigervnc/network/TcpListener.java
index bab9e4c..45ee8a4 100644
--- a/java/com/tigervnc/network/TcpListener.java
+++ b/java/com/tigervnc/network/TcpListener.java
@@ -84,12 +84,21 @@
this(listenaddr, port, false, null, true);
}
-// TcpListener::~TcpListener() {
-// if (closeFd) closesocket(fd);
-// }
+ protected void finalize() throws Exception {
+ if (closeFd)
+ try {
+ ((SocketDescriptor)getFd()).close();
+ } catch (IOException e) {
+ throw new Exception(e.getMessage());
+ }
+ }
- public void shutdown() {
- //shutdown(getFd(), 2);
+ public void shutdown() throws Exception {
+ try {
+ ((SocketDescriptor)getFd()).shutdown();
+ } catch (IOException e) {
+ throw new Exception(e.getMessage());
+ }
}
public TcpSocket accept() {
@@ -132,32 +141,12 @@
}
fd.setChannel(new_sock);
TcpSocket s = new TcpSocket(fd);
- //if (filter && !filter->verifyConnection(s)) {
- // delete s;
- // return 0;
- //}
return s;
}
-/*
-void TcpListener::getMyAddresses(std::list<char*>* result) {
- const hostent* addrs = gethostbyname(0);
- if (addrs == 0)
- throw rdr::SystemException("gethostbyname", errorNumber);
- if (addrs->h_addrtype != AF_INET)
- throw rdr::Exception("getMyAddresses: bad family");
- for (int i=0; addrs->h_addr_list[i] != 0; i++) {
- const char* addrC = inet_ntoa(*((struct in_addr*)addrs->h_addr_list[i]));
- char* addr = new char[strlen(addrC)+1];
- strcpy(addr, addrC);
- result->push_back(addr);
+ public int getMyPort() {
+ return ((SocketDescriptor)getFd()).socket().getLocalPort();
}
-}
- */
-
- //public int getMyPort() {
- // return TcpSocket.getSockPort();
- //}
private boolean closeFd;
private ServerSocketChannel channel;
diff --git a/java/com/tigervnc/network/TcpSocket.java b/java/com/tigervnc/network/TcpSocket.java
index 051a9d8..43787e4 100644
--- a/java/com/tigervnc/network/TcpSocket.java
+++ b/java/com/tigervnc/network/TcpSocket.java
@@ -113,8 +113,7 @@
}
public int getMyPort() {
- SocketAddress address = ((SocketDescriptor)getFd()).socket().getLocalSocketAddress();
- return ((InetSocketAddress)address).getPort();
+ return getSockPort();
}
public String getPeerAddress() {
@@ -184,7 +183,7 @@
}
public int getSockPort() {
- return ((InetSocketAddress)((SocketDescriptor)getFd()).socket().getRemoteSocketAddress()).getPort();
+ return ((SocketDescriptor)getFd()).socket().getLocalPort();
}
/* Tunnelling support. */
diff --git a/java/com/tigervnc/vncviewer/VncViewer.java b/java/com/tigervnc/vncviewer/VncViewer.java
index 0df39c8..1e0f223 100644
--- a/java/com/tigervnc/vncviewer/VncViewer.java
+++ b/java/com/tigervnc/vncviewer/VncViewer.java
@@ -457,7 +457,7 @@
while (true) {
Socket new_sock = listener.accept();
if (new_sock != null)
- newViewer(this, new_sock);
+ newViewer(this, new_sock, true);
}
}