diff --git a/src/backend/BluetoothTnc.scala b/src/backend/BluetoothTnc.scala index f5c93d4..92a3bc9 100644 --- a/src/backend/BluetoothTnc.scala +++ b/src/backend/BluetoothTnc.scala @@ -61,7 +61,7 @@ class BluetoothTnc(service : AprsService, prefs : PrefsWrapper) extends AprsIsUp class BtSocketThread(ba : BluetoothAdapter, tnc : BluetoothDevice) extends Thread("APRSdroid Bluetooth connection") { val TAG = "BtSocketThread" - var running = false + var running = true var socket : BluetoothSocket = null var reader : KissReader = null var writer : KissWriter = null @@ -96,7 +96,6 @@ class BluetoothTnc(service : AprsService, prefs : PrefsWrapper) extends AprsIsUp this.synchronized { reader = new KissReader(socket.getInputStream()) writer = new KissWriter(socket.getOutputStream()) - running = true } Log.d(TAG, "init_socket() done") } @@ -105,10 +104,10 @@ class BluetoothTnc(service : AprsService, prefs : PrefsWrapper) extends AprsIsUp Log.d(TAG, "BtSocketThread.run()") try { init_socket() + service.postPosterStarted() } catch { - case e : Exception => e.printStackTrace(); service.postAbort(e.toString()) + case e : Exception => e.printStackTrace(); service.postAbort(e.toString()); running = false; } - service.postPosterStarted() while (running) { try { Log.d(TAG, "waiting for data...") diff --git a/src/backend/TcpUploader.scala b/src/backend/TcpUploader.scala index bbda83b..57ef770 100644 --- a/src/backend/TcpUploader.scala +++ b/src/backend/TcpUploader.scala @@ -55,7 +55,7 @@ class TcpUploader(service : AprsService, prefs : PrefsWrapper) extends AprsIsUpl class TcpSocketThread(host : String, port : Int) extends Thread("APRSdroid TCP connection") { val TAG = "APRSdroid.TcpSocketThread" - var running = false + var running = true var socket : Socket = null var reader : BufferedReader = null var writer : PrintWriter = null @@ -65,6 +65,10 @@ class TcpUploader(service : AprsService, prefs : PrefsWrapper) extends AprsIsUpl service.postAddPost(StorageDatabase.Post.TYPE_INFO, R.string.post_info, service.getString(R.string.post_connecting, host, port.asInstanceOf[AnyRef])) this.synchronized { + if (!running) { + Log.d(TAG, "init_socket() aborted") + return; + } socket = new Socket(host, port) socket.setKeepAlive(true) socket.setSoTimeout(so_timeout*1000) @@ -74,7 +78,6 @@ class TcpUploader(service : AprsService, prefs : PrefsWrapper) extends AprsIsUpl socket.getOutputStream()), true) Log.d(TAG, login + setupFilter()) writer.println(login + setupFilter()) - running = true } Log.d(TAG, "init_socket() done") } @@ -85,10 +88,10 @@ class TcpUploader(service : AprsService, prefs : PrefsWrapper) extends AprsIsUpl Log.d(TAG, "TcpSocketThread.run()") try { init_socket() + service.postPosterStarted() } catch { - case e : Exception => service.postAbort(e.toString()) + case e : Exception => service.postAbort(e.toString()); running = false } - service.postPosterStarted() while (running) { try { if (need_reconnect) {