Commit 8c55630e authored by Mygod's avatar Mygod

Remove file socket on thread finishes

parent b808920e
...@@ -42,24 +42,28 @@ abstract class LocalSocketListener(protected val tag: String) : Thread() { ...@@ -42,24 +42,28 @@ abstract class LocalSocketListener(protected val tag: String) : Thread() {
*/ */
protected abstract fun accept(socket: LocalSocket) protected abstract fun accept(socket: LocalSocket)
override fun run() { override fun run() {
while (!socketFile.delete()) Thread.sleep(100)
try { try {
val localSocket = LocalSocket() while (!socketFile.delete()) Thread.sleep(100)
localSocket.bind(LocalSocketAddress(socketFile.absolutePath, LocalSocketAddress.Namespace.FILESYSTEM))
serverSocket.set(LocalServerSocket(localSocket.fileDescriptor))
} catch (e: IOException) {
Log.e(tag, "unable to bind", e)
return
}
while (true) {
val serverSocket = serverSocket.get() ?: return
try { try {
serverSocket.accept() val localSocket = LocalSocket()
localSocket.bind(LocalSocketAddress(socketFile.absolutePath, LocalSocketAddress.Namespace.FILESYSTEM))
serverSocket.set(LocalServerSocket(localSocket.fileDescriptor))
} catch (e: IOException) { } catch (e: IOException) {
Log.e(tag, "Error when accept socket", e) Log.e(tag, "unable to bind", e)
app.track(e) return
null }
}?.use(this::accept) while (true) {
val serverSocket = serverSocket.get() ?: return
try {
serverSocket.accept()
} catch (e: IOException) {
Log.e(tag, "Error when accept socket", e)
app.track(e)
null
}?.use(this::accept)
}
} finally {
stopThread()
} }
} }
...@@ -67,6 +71,7 @@ abstract class LocalSocketListener(protected val tag: String) : Thread() { ...@@ -67,6 +71,7 @@ abstract class LocalSocketListener(protected val tag: String) : Thread() {
val old = serverSocket.getAndSet(null) ?: return val old = serverSocket.getAndSet(null) ?: return
try { try {
old.close() old.close()
if (!socketFile.delete()) socketFile.deleteOnExit()
} catch (_: Exception) { } // ignore } catch (_: Exception) { } // ignore
} }
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment