bt, tcp: kill race condition on service start

obj_origin
Georg Lukas 2011-12-06 18:42:53 +01:00
rodzic 68f559acca
commit f5249add10
2 zmienionych plików z 10 dodań i 8 usunięć

Wyświetl plik

@ -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...")

Wyświetl plik

@ -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) {