{"record":{"id":"5cfa8761c321f68d","repo":"XTLS/Xray-core","slug":"new-handshake-needed","errorCode":null,"errorMessage":"new handshake needed","messagePattern":"new handshake needed","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"proxy/vless/encryption/common.go","lineNumber":118,"sourceCode":"\t\t}\n\t\tc.PeerPadding = nil\n\t}\n\tif c.input.Len() > 0 {\n\t\treturn c.input.Read(b)\n\t}\n\tpeerHeader := [5]byte{}\n\tif _, err := io.ReadFull(c.Conn, peerHeader[:]); err != nil {\n\t\treturn 0, err\n\t}\n\tl, err := DecodeHeader(peerHeader[:]) // l: 17~16640\n\tif err != nil {\n\t\tif c.Client != nil && strings.Contains(err.Error(), \"invalid header: \") { // client's 0-RTT\n\t\t\tc.Client.RWLock.Lock()\n\t\t\tif bytes.HasPrefix(c.UnitedKey, c.Client.PfsKey) {\n\t\t\t\tc.Client.Expire = time.Now() // expired\n\t\t\t}\n\t\t\tc.Client.RWLock.Unlock()\n\t\t\treturn 0, errors.New(\"new handshake needed\")\n\t\t}\n\t\treturn 0, err\n\t}\n\tc.Client = nil\n\tif c.rawInput.Cap() < l {\n\t\tc.rawInput.Grow(l) // no need to use sync.Pool, because we are always reading\n\t}\n\tpeerData := c.rawInput.Bytes()[:l]\n\tif _, err := io.ReadFull(c.Conn, peerData); err != nil {\n\t\treturn 0, err\n\t}\n\tdst := peerData[:l-16]\n\tif len(dst) <= len(b) {\n\t\tdst = b[:len(dst)] // avoids another copy()\n\t}\n\tvar newAEAD *AEAD\n\tif bytes.Equal(c.PeerAEAD.Nonce[:], MaxNonce) {\n\t\tnewAEAD = NewAEAD(append(peerHeader[:], peerData...), c.UnitedKey, c.UseAES)","sourceCodeStart":100,"sourceCodeEnd":136,"githubUrl":"https://github.com/XTLS/Xray-core/blob/7d214f8b094f75322fa3990f8aadad1c912f24f5/proxy/vless/encryption/common.go#L100-L136","documentation":"Error \"new handshake needed\" thrown in XTLS/Xray-core.","triggerScenarios":"Thrown at proxy/vless/encryption/common.go:118 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"7d214f8b094f75322fa3990f8aadad1c912f24f5","analyzedAt":"2026-08-15T14:26:24.325Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}