diff --git a/CHANGELOG b/CHANGELOG index 60f4d26..eb0a749 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,9 +1,9 @@ proxy更新日志 -v6.7 +v6.8 1.HTTP(S)\SOCKS5代理,API认证功能,发送给认证接口的参数增加了本地IP,local_ip字段, 代表用户访问的是本地服务器的哪个IP. -2.fix #194 -3.fix #134 +2.fix #194 , fix #134 , 代理更稳定. +3.增加了一波英文文档. v6.6 1.优化了limitconn的关闭逻辑,释放更多资源. diff --git a/VERSION b/VERSION index 5840475..8004d90 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -6.7 \ No newline at end of file +6.8 \ No newline at end of file diff --git a/sdk/CHANGELOG b/sdk/CHANGELOG index ec15bce..ccb7d53 100644 --- a/sdk/CHANGELOG +++ b/sdk/CHANGELOG @@ -1,3 +1,4 @@ -v4.8 -1.修复了多个服务同时开启日志,只会输出到最后一个日志文件的bug. -2.增加了获取sdk版本的Version()方法. +v6.8 +1.sdk增加了调试锁,避免潜在的并发问题. +2.sdk的Stop方法增加了锁,避免潜在的并发问题. +3.sdk的Stop方法增加了关闭文件操作. \ No newline at end of file diff --git a/sdk/android-ios/sdk.go b/sdk/android-ios/sdk.go index da6ab44..c0cb16b 100644 --- a/sdk/android-ios/sdk.go +++ b/sdk/android-ios/sdk.go @@ -10,6 +10,7 @@ import ( "path/filepath" "runtime/pprof" "strings" + "sync" "github.com/snail007/goproxy/core/lib/kcpcfg" encryptconn "github.com/snail007/goproxy/core/lib/transport/encrypt" @@ -34,7 +35,9 @@ var ( app *kingpin.Application cpuProfilingFile, memProfilingFile, blockProfilingFile, goroutineProfilingFile, threadcreateProfilingFile *os.File - isProfiling bool + isProfiling bool + profilingLock = &sync.Mutex{} + startStopLock = &sync.Mutex{} ) type LogCallback interface { @@ -475,6 +478,8 @@ func StartWithLog(serviceID, serviceArgsStr string, loggerCallback LogCallback) } func Stop(serviceID string) { + startStopLock.Lock() + defer startStopLock.Unlock() services.Stop(serviceID) } @@ -482,6 +487,8 @@ func Version() string { return SDK_VERSION } func StartProfiling(storePath string) { + profilingLock.Lock() + defer profilingLock.Unlock() if !isProfiling { isProfiling = true if storePath == "" { @@ -496,6 +503,8 @@ func StartProfiling(storePath string) { } } func StopProfiling() { + profilingLock.Lock() + defer profilingLock.Unlock() if isProfiling { isProfiling = false pprof.StopCPUProfile() @@ -507,6 +516,11 @@ func StopProfiling() { block.WriteTo(blockProfilingFile, 1) threadcreate := pprof.Lookup("threadcreate") threadcreate.WriteTo(threadcreateProfilingFile, 1) + //close + goroutineProfilingFile.Close() + memProfilingFile.Close() + blockProfilingFile.Close() + threadcreateProfilingFile.Close() } }