Fix bug where transfer continues when stopped from new device.

This commit is contained in:
Cody Henthorne 2021-03-16 22:52:33 -04:00 committed by Greyson Parrelli
parent 45178b3eb3
commit cb6e3ade15

View file

@ -32,6 +32,7 @@ final class NetworkServerThread extends Thread {
public static final int NETWORK_CLIENT_SSL_ESTABLISHED = 1005; public static final int NETWORK_CLIENT_SSL_ESTABLISHED = 1005;
private volatile ServerSocket serverSocket; private volatile ServerSocket serverSocket;
private volatile Socket clientSocket;
private volatile boolean isRunning; private volatile boolean isRunning;
private volatile Boolean isVerified; private volatile Boolean isVerified;
@ -64,7 +65,13 @@ final class NetworkServerThread extends Thread {
handler.sendMessage(handler.obtainMessage(NETWORK_SERVER_STARTED, serverSocket.getLocalPort(), 0)); handler.sendMessage(handler.obtainMessage(NETWORK_SERVER_STARTED, serverSocket.getLocalPort(), 0));
while (shouldKeepRunning() && !serverSocket.isClosed()) { while (shouldKeepRunning() && !serverSocket.isClosed()) {
Log.i(TAG, "Waiting for client socket accept..."); Log.i(TAG, "Waiting for client socket accept...");
try (Socket clientSocket = serverSocket.accept()) { try {
clientSocket = serverSocket.accept();
if (!isRunning) {
break;
}
InputStream inputStream = clientSocket.getInputStream(); InputStream inputStream = clientSocket.getInputStream();
OutputStream outputStream = clientSocket.getOutputStream(); OutputStream outputStream = clientSocket.getOutputStream();
int authenticationCode = DeviceTransferAuthentication.generateServerAuthenticationCode(keys.getX509Encoded(), inputStream, outputStream); int authenticationCode = DeviceTransferAuthentication.generateServerAuthenticationCode(keys.getX509Encoded(), inputStream, outputStream);
@ -99,6 +106,7 @@ final class NetworkServerThread extends Thread {
Log.i(TAG, "Server shutting down..."); Log.i(TAG, "Server shutting down...");
} }
} finally { } finally {
StreamUtil.close(clientSocket);
handler.sendEmptyMessage(NETWORK_CLIENT_DISCONNECTED); handler.sendEmptyMessage(NETWORK_CLIENT_DISCONNECTED);
} }
} }
@ -152,6 +160,7 @@ final class NetworkServerThread extends Thread {
@AnyThread @AnyThread
public void shutdown() { public void shutdown() {
isRunning = false; isRunning = false;
StreamUtil.close(clientSocket);
StreamUtil.close(serverSocket); StreamUtil.close(serverSocket);
interrupt(); interrupt();
} }