Skip to content

Commit de7e516

Browse files
committed
fix MTU
1 parent c31a5c1 commit de7e516

File tree

3 files changed

+27
-24
lines changed

3 files changed

+27
-24
lines changed

src/main/AndroidManifest.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
22
package="com.github.shadowsocks"
3-
android:versionCode="113"
4-
android:versionName="2.7.5">
3+
android:versionCode="114"
4+
android:versionName="2.7.6">
55

66
<uses-permission android:name="android.permission.INTERNET"/>
77
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class ShadowsocksVpnService extends VpnService with BaseService {
6363

6464
private lazy val application = getApplication.asInstanceOf[ShadowsocksApplication]
6565
val TAG = "ShadowsocksVpnService"
66-
val VPN_MTU = 1400
66+
val VPN_MTU = 1500
6767
val PRIVATE_VLAN = "26.26.26.%s"
6868
var conn: ParcelFileDescriptor = null
6969
var notificationManager: NotificationManager = null
@@ -103,21 +103,13 @@ class ShadowsocksVpnService extends VpnService with BaseService {
103103
null
104104
}
105105

106-
override def onDestroy() {
107-
super.onDestroy()
108-
if (vpnThread != null) vpnThread.stopThread()
109-
}
110-
111106
override def onCreate() {
112107
super.onCreate()
113108

114109
ConfigUtils.refresh(this)
115110

116111
notificationManager = getSystemService(Context.NOTIFICATION_SERVICE)
117112
.asInstanceOf[NotificationManager]
118-
119-
vpnThread = new ShadowsocksVpnThread(this)
120-
vpnThread.start()
121113
}
122114

123115
override def onRevoke() {
@@ -126,6 +118,11 @@ class ShadowsocksVpnService extends VpnService with BaseService {
126118

127119
override def stopRunner() {
128120

121+
if (vpnThread != null) {
122+
vpnThread.stopThread()
123+
vpnThread = null
124+
}
125+
129126
// channge the state
130127
changeState(State.STOPPING)
131128

@@ -185,6 +182,14 @@ class ShadowsocksVpnService extends VpnService with BaseService {
185182

186183
override def startRunner(c: Config) {
187184

185+
if (vpnThread != null) {
186+
vpnThread.stopThread()
187+
vpnThread = null
188+
}
189+
190+
vpnThread = new ShadowsocksVpnThread(this)
191+
vpnThread.start()
192+
188193
config = c
189194

190195
// ensure the VPNService is prepared

src/main/scala/com/github/shadowsocks/ShadowsocksVpnThread.scala

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -45,43 +45,38 @@ import java.util.concurrent.Executors
4545
import android.net.{LocalServerSocket, LocalSocket, LocalSocketAddress}
4646
import android.util.Log
4747

48+
object ShadowsocksVpn {
49+
@volatile var serverSocket: LocalServerSocket = null
50+
}
51+
4852
class ShadowsocksVpnThread(vpnService: ShadowsocksVpnService) extends Thread {
4953

5054
val TAG = "ShadowsocksVpnService"
5155
val PATH = "shadowsocks_protect"
5256

5357
var isRunning: Boolean = true
54-
var serverSocket: LocalServerSocket = null
5558

5659
def stopThread() {
5760
isRunning = false
58-
if (serverSocket != null) {
59-
serverSocket.close()
60-
serverSocket = null
61-
}
6261
}
6362

6463
override def run(): Unit = {
6564

6665
try {
67-
if (serverSocket != null) {
68-
serverSocket.close()
69-
serverSocket = null
66+
if (ShadowsocksVpn.serverSocket == null) {
67+
ShadowsocksVpn.serverSocket = new LocalServerSocket(PATH)
7068
}
71-
serverSocket = new LocalServerSocket(PATH)
7269
} catch {
7370
case e: IOException =>
7471
Log.e(TAG, "unable to bind", e)
75-
vpnService.stopBackgroundService()
7672
return
7773
}
7874

7975
val pool = Executors.newFixedThreadPool(4)
8076

8177
while (isRunning) {
82-
8378
try {
84-
val socket = serverSocket.accept()
79+
val socket = ShadowsocksVpn.serverSocket.accept()
8580

8681
pool.execute(new Runnable {
8782
override def run() {
@@ -126,7 +121,10 @@ class ShadowsocksVpnThread(vpnService: ShadowsocksVpnService) extends Thread {
126121

127122
}})
128123
} catch {
129-
case e: IOException => Log.e(TAG, "Error when accept socket", e)
124+
case e: IOException => {
125+
Log.e(TAG, "Error when accept socket", e)
126+
return
127+
}
130128
}
131129
}
132130
}

0 commit comments

Comments
 (0)