mirror of
https://github.com/XTLS/REALITY.git
synced 2025-08-22 22:48:36 +00:00
refactor: add fast exit from DetectPostHandshakeRecordsLens if fingerprint already exists in GlobalPostHandshakeRecordsLens.
This commit is contained in:
parent
6833ba5445
commit
f95e393ceb
@ -17,6 +17,8 @@ var GlobalPostHandshakeRecordsLock sync.Mutex
|
|||||||
|
|
||||||
var GlobalPostHandshakeRecordsLens map[string]map[string][]int
|
var GlobalPostHandshakeRecordsLens map[string]map[string][]int
|
||||||
|
|
||||||
|
const networkType = "tcp"
|
||||||
|
|
||||||
func InitAllRecords(config *Config) {
|
func InitAllRecords(config *Config) {
|
||||||
DetectPostHandshakeRecordsLens(config, "hellochrome_131") // init most used first
|
DetectPostHandshakeRecordsLens(config, "hellochrome_131") // init most used first
|
||||||
for f, _ := range ModernFingerprints {
|
for f, _ := range ModernFingerprints {
|
||||||
@ -25,6 +27,10 @@ func InitAllRecords(config *Config) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func DetectPostHandshakeRecordsLens(config *Config, fingerprint string) map[string][]int {
|
func DetectPostHandshakeRecordsLens(config *Config, fingerprint string) map[string][]int {
|
||||||
|
if GlobalPostHandshakeRecordsLens != nil && GlobalPostHandshakeRecordsLens[fingerprint] != nil {
|
||||||
|
return GlobalPostHandshakeRecordsLens[fingerprint]
|
||||||
|
}
|
||||||
|
|
||||||
GlobalPostHandshakeRecordsLock.Lock()
|
GlobalPostHandshakeRecordsLock.Lock()
|
||||||
if GlobalPostHandshakeRecordsLens == nil {
|
if GlobalPostHandshakeRecordsLens == nil {
|
||||||
GlobalPostHandshakeRecordsLens = make(map[string]map[string][]int)
|
GlobalPostHandshakeRecordsLens = make(map[string]map[string][]int)
|
||||||
@ -34,13 +40,13 @@ func DetectPostHandshakeRecordsLens(config *Config, fingerprint string) map[stri
|
|||||||
}
|
}
|
||||||
var pending []string
|
var pending []string
|
||||||
for sni := range config.ServerNames {
|
for sni := range config.ServerNames {
|
||||||
if (GlobalPostHandshakeRecordsLens[fingerprint][sni] == nil) {
|
if GlobalPostHandshakeRecordsLens[fingerprint][sni] == nil {
|
||||||
pending = append(pending, sni)
|
pending = append(pending, sni)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
GlobalPostHandshakeRecordsLock.Unlock()
|
GlobalPostHandshakeRecordsLock.Unlock()
|
||||||
for _, sni := range pending {
|
for _, sni := range pending {
|
||||||
target, err := net.Dial("tcp", config.Dest)
|
target, err := net.Dial(networkType, config.Dest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user