diff --git a/project/plugins.sbt b/project/plugins.sbt index 3ade29b4..0b283529 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,6 +1,6 @@ resolvers += Resolver.url("scalasbt releases", new URL("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-snapshots"))(Resolver.ivyStylePatterns) -addSbtPlugin("com.hanhuy.sbt" % "android-sdk-plugin" % "1.4.7") +addSbtPlugin("com.hanhuy.sbt" % "android-sdk-plugin" % "1.4.8") resolvers += "Sonatype snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/" diff --git a/src/main/jni/badvpn/tun2socks/tun2socks.c b/src/main/jni/badvpn/tun2socks/tun2socks.c index 7396cc49..ea2e0680 100644 --- a/src/main/jni/badvpn/tun2socks/tun2socks.c +++ b/src/main/jni/badvpn/tun2socks/tun2socks.c @@ -502,11 +502,11 @@ int main (int argc, char **argv) goto fail2; } - char *path = "/data/data/com.github.shadowsocks/sock_path"; - unlink(path); + char *path = "#shadowsocks_tunfd"; memset(&addr, 0, sizeof(addr)); addr.sun_family = AF_UNIX; strncpy(addr.sun_path, path, sizeof(addr.sun_path)-1); + addr.sun_path[0] = 0; if (bind(sock, (struct sockaddr*)&addr, sizeof(addr)) == -1) { BLog(BLOG_ERROR, "bind() failed: %s (sock = %d)\n", strerror(errno), sock); diff --git a/src/main/jni/shadowsocks-libev b/src/main/jni/shadowsocks-libev index 35297b6c..5d4db4f0 160000 --- a/src/main/jni/shadowsocks-libev +++ b/src/main/jni/shadowsocks-libev @@ -1 +1 @@ -Subproject commit 35297b6c228e398344d35246f0e961180d89b786 +Subproject commit 5d4db4f093de1256bcb25e1958a76a03102dc77d diff --git a/src/main/jni/system.cpp b/src/main/jni/system.cpp index 39cfc1e4..807bab4a 100644 --- a/src/main/jni/system.cpp +++ b/src/main/jni/system.cpp @@ -58,7 +58,8 @@ jint Java_com_github_shadowsocks_system_sendfd(JNIEnv *env, jobject thiz, jint t memset(&addr, 0, sizeof(addr)); addr.sun_family = AF_UNIX; - strncpy(addr.sun_path, "/data/data/com.github.shadowsocks/sock_path", sizeof(addr.sun_path)-1); + strncpy(addr.sun_path, "#shadowsocks_tunfd", sizeof(addr.sun_path)-1); + addr.sun_path[0] = 0; if (connect(fd, (struct sockaddr*)&addr, sizeof(addr)) == -1) { LOGE("connect() failed: %s (fd = %d)\n", strerror(errno), fd); diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnThread.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnThread.scala index 7eadaad5..eb679fad 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnThread.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnThread.scala @@ -48,7 +48,7 @@ import android.util.Log class ShadowsocksVpnThread(vpnService: ShadowsocksVpnService) extends Thread { val TAG = "ShadowsocksVpnService" - val PATH = "/data/data/com.github.shadowsocks/protect_path" + val PATH = "shadowsocks_protect" var isRunning: Boolean = true var serverSocket: LocalServerSocket = null @@ -64,16 +64,11 @@ class ShadowsocksVpnThread(vpnService: ShadowsocksVpnService) extends Thread { override def run(): Unit = { try { - new File(PATH).delete() - } catch { - case _: Exception => // ignore - } - - try { - val localSocket = new LocalSocket - - localSocket.bind(new LocalSocketAddress(PATH, LocalSocketAddress.Namespace.FILESYSTEM)) - serverSocket = new LocalServerSocket(localSocket.getFileDescriptor) + if (serverSocket != null) { + serverSocket.close() + serverSocket = null + } + serverSocket = new LocalServerSocket(PATH) } catch { case e: IOException => Log.e(TAG, "unable to bind", e)