{"record":{"id":"86b43a2cf95754fc","repo":"XTLS/Xray-core","slug":"only-one-element-is-allowed-in-alpn-when-using","errorCode":null,"errorMessage":"only one element is allowed in \"alpn\" when using \"fromMitm\" in it","messagePattern":"only one element is allowed in \"alpn\" when using \"fromMitm\" in it","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"infra/conf/transport_security.go","lineNumber":342,"sourceCode":"\tconfig.Certificate = make([]*tls.Certificate, len(c.Certs))\n\tfor idx, certConf := range c.Certs {\n\t\tcert, err := certConf.Build()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tconfig.Certificate[idx] = cert\n\t}\n\tserverName := c.ServerName\n\tif len(c.ServerName) > 0 {\n\t\tconfig.ServerName = serverName\n\t}\n\tif c.ALPN != nil && len(*c.ALPN) > 0 {\n\t\tconfig.NextProtocol = []string(*c.ALPN)\n\t}\n\tif len(config.NextProtocol) > 1 {\n\t\tfor _, p := range config.NextProtocol {\n\t\t\tif tls.IsFromMitm(p) {\n\t\t\t\treturn nil, errors.New(`only one element is allowed in \"alpn\" when using \"fromMitm\" in it`)\n\t\t\t}\n\t\t}\n\t}\n\tif c.CurvePreferences != nil && len(*c.CurvePreferences) > 0 {\n\t\tconfig.CurvePreferences = []string(*c.CurvePreferences)\n\t}\n\tconfig.EnableSessionResumption = c.EnableSessionResumption\n\tconfig.DisableSystemRoot = c.DisableSystemRoot\n\tconfig.MinVersion = c.MinVersion\n\tconfig.MaxVersion = c.MaxVersion\n\tconfig.CipherSuites = c.CipherSuites\n\tconfig.Fingerprint = strings.ToLower(c.Fingerprint)\n\tif config.Fingerprint != \"unsafe\" && tls.GetFingerprint(config.Fingerprint) == nil {\n\t\treturn nil, errors.New(`unknown \"fingerprint\": `, config.Fingerprint)\n\t}\n\tconfig.RejectUnknownSni = c.RejectUnknownSNI\n\tconfig.MasterKeyLog = c.MasterKeyLog\n","sourceCodeStart":324,"sourceCodeEnd":360,"githubUrl":"https://github.com/XTLS/Xray-core/blob/7d214f8b094f75322fa3990f8aadad1c912f24f5/infra/conf/transport_security.go#L324-L360","documentation":"Error \"only one element is allowed in \"alpn\" when using \"fromMitm\" in it\" thrown in XTLS/Xray-core.","triggerScenarios":"Thrown at infra/conf/transport_security.go:342 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"}