summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/isode/stroke/network/Connector.java9
-rw-r--r--src/com/isode/stroke/network/ProxiedConnection.java10
2 files changed, 16 insertions, 3 deletions
diff --git a/src/com/isode/stroke/network/Connector.java b/src/com/isode/stroke/network/Connector.java
index 6033a89..2823679 100644
--- a/src/com/isode/stroke/network/Connector.java
+++ b/src/com/isode/stroke/network/Connector.java
@@ -1,8 +1,8 @@
/*
- * Copyright (c) 2010-2014, Isode Limited, London, England.
+ * Copyright (c) 2010-2016, Isode Limited, London, England.
* All rights reserved.
*/
/*
* Copyright (c) 2010 Remko Tronçon
* All rights reserved.
*/
@@ -59,12 +59,19 @@ public class Connector {
else {
queryAddress(hostname);
}
}
public void stop() {
+ if (currentConnectionConnectFinishedConnection != null) {
+ currentConnectionConnectFinishedConnection.disconnect();
+ currentConnectionConnectFinishedConnection = null;
+ }
+ if (currentConnection != null) {
+ currentConnection.disconnect();
+ }
finish(null);
}
public final Signal2<Connection, com.isode.stroke.base.Error> onConnectFinished = new Signal2<Connection, com.isode.stroke.base.Error>();
private Connector(String hostname,int port, String serviceLookupPrefix, DomainNameResolver resolver, ConnectionFactory connectionFactory, TimerFactory timerFactory) {
diff --git a/src/com/isode/stroke/network/ProxiedConnection.java b/src/com/isode/stroke/network/ProxiedConnection.java
index 5eac083..69b4b90 100644
--- a/src/com/isode/stroke/network/ProxiedConnection.java
+++ b/src/com/isode/stroke/network/ProxiedConnection.java
@@ -8,12 +8,14 @@
* Licensed under the simplified BSD license.
* See Documentation/Licenses/BSD-simplified.txt for more information.
*/
package com.isode.stroke.network;
+import java.util.logging.Logger;
+
import com.isode.stroke.signals.SignalConnection;
import com.isode.stroke.signals.Slot2;
import com.isode.stroke.signals.Slot1;
import com.isode.stroke.base.SafeByteArray;
public abstract class ProxiedConnection extends Connection {
@@ -27,12 +29,13 @@ public abstract class ProxiedConnection extends Connection {
private HostAddressPort server_;
private Connector connector_;
private Connection connection_;
private SignalConnection onDataReadConnection_;
private SignalConnection onDisconnectedConnection_;
private SignalConnection onConnectFinishedConnection;
+ private Logger logger_ = Logger.getLogger(this.getClass().getName());
public ProxiedConnection(DomainNameResolver resolver, ConnectionFactory connectionFactory, TimerFactory timerFactory, final String proxyHost, int proxyPort) {
this.resolver_ = resolver;
this.connectionFactory_ = connectionFactory;
this.timerFactory_ = timerFactory;
this.proxyHost_ = proxyHost;
@@ -46,13 +49,13 @@ public abstract class ProxiedConnection extends Connection {
cancelConnector();
if (connection_ != null) {
onDataReadConnection_.disconnect();
onDisconnectedConnection_.disconnect();
}
if (connected_) {
- System.err.println("Warning: Connection was still established.");
+ logger_.warning("Warning: Connection was still established.");
}
}
finally {
super.finalize();
}
}
@@ -73,14 +76,17 @@ public abstract class ProxiedConnection extends Connection {
}
});
connector_.start();
}
public void disconnect() {
+ cancelConnector();
connected_ = false;
- connection_.disconnect();
+ if (connection_ != null) {
+ connection_.disconnect();
+ }
}
public void write(final SafeByteArray data) {
connection_.write(data);
}