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() {
*/
protected abstract fun accept(socket: LocalSocket)
override fun run() {
while (!socketFile.delete()) Thread.sleep(100)
try {
val localSocket = LocalSocket()
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
while (!socketFile.delete()) Thread.sleep(100)
try {
serverSocket.accept()
val localSocket = LocalSocket()
localSocket.bind(LocalSocketAddress(socketFile.absolutePath, LocalSocketAddress.Namespace.FILESYSTEM))
serverSocket.set(LocalServerSocket(localSocket.fileDescriptor))
} catch (e: IOException) {
Log.e(tag, "Error when accept socket", e)
app.track(e)
null
}?.use(this::accept)
Log.e(tag, "unable to bind", e)
return
}
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() {
val old = serverSocket.getAndSet(null) ?: return
try {
old.close()
if (!socketFile.delete()) socketFile.deleteOnExit()
} 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