diff --git a/mobile/proguard-rules.pro b/mobile/proguard-rules.pro index 7639281b..24587743 100644 --- a/mobile/proguard-rules.pro +++ b/mobile/proguard-rules.pro @@ -23,6 +23,8 @@ -keepattributes *DatabaseField* -keepattributes *DatabaseTable* -keepattributes *SerializedName* +-keepattributes Exceptions, InnerClasses + -keep class com.j256.** -keepclassmembers class com.j256.** { *; } -keep enum com.j256.** diff --git a/mobile/src/main/java/com/github/shadowsocks/bg/LocalSocketListener.kt b/mobile/src/main/java/com/github/shadowsocks/bg/LocalSocketListener.kt index c2f334d1..d3afb592 100644 --- a/mobile/src/main/java/com/github/shadowsocks/bg/LocalSocketListener.kt +++ b/mobile/src/main/java/com/github/shadowsocks/bg/LocalSocketListener.kt @@ -54,16 +54,26 @@ abstract class LocalSocketListener(private val tag: String) : Thread() { while (true) { val serverSocket = serverSocket.get() ?: return try { + val socket = serverSocket.accept() + try { - serverSocket.accept() - } catch (e: IOException) { - Log.e(tag, "Error when accept socket", e) + accept(socket) + } catch (e: Exception) { + Log.e(tag, "Error when recv traffic stat", e) app.track(e) - null - }?.use(this::accept) - } catch (e: Exception) { - Log.e(tag, "Error when recv traffic stat", e) + } + + try { + socket.close() + } catch (e: IOException) { + Log.e(tag, "Error when closing the local socket", e) + app.track(e) + } + + } catch (e: IOException) { + Log.e(tag, "Error when accept socket", e) app.track(e) + return } } }