{"record":{"id":"07d94e96c4558419","repo":"fatedier/frp","slug":"unknown-multiplexer-s-07d94e","errorCode":null,"errorMessage":"unknown multiplexer [%s]","messagePattern":"unknown multiplexer \\[(.+?)\\]","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/proxy/tcpmux.go","lineNumber":95,"sourceCode":"\taddrs := make([]string, 0)\n\tfor _, domain := range domains {\n\t\taddrs, err = pxy.httpConnectListen(domain, pxy.cfg.RouteByHTTPUser, pxy.cfg.HTTPUser, pxy.cfg.HTTPPassword, addrs)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n\n\tpxy.startCommonTCPListenersHandler()\n\tremoteAddr = strings.Join(addrs, \",\")\n\treturn remoteAddr, err\n}\n\nfunc (pxy *TCPMuxProxy) Run() (remoteAddr string, err error) {\n\tswitch v1.TCPMultiplexerType(pxy.cfg.Multiplexer) {\n\tcase v1.TCPMultiplexerHTTPConnect:\n\t\tremoteAddr, err = pxy.httpConnectRun()\n\tdefault:\n\t\terr = fmt.Errorf(\"unknown multiplexer [%s]\", pxy.cfg.Multiplexer)\n\t}\n\n\tif err != nil {\n\t\tpxy.Close()\n\t}\n\treturn remoteAddr, err\n}\n\nfunc (pxy *TCPMuxProxy) Close() {\n\tpxy.BaseProxy.Close()\n}\n","sourceCodeStart":77,"sourceCodeEnd":107,"githubUrl":"https://github.com/fatedier/frp/blob/6c8a8d0a97d03b44e9528d30b30c70cb9d61b405/server/proxy/tcpmux.go#L77-L107","documentation":"TCPMuxProxy.Run dispatches on cfg.Multiplexer and currently only implements the httpconnect multiplexer; any other value falls through to \"unknown multiplexer [%s]\". The proxy is then closed, so the tcpmux proxy never becomes reachable.","triggerScenarios":"Declaring a tcpmux proxy with multiplexer set to something other than \"httpconnect\" (typos like \"http-connect\", \"HTTPSConnect\", or empty/other values that escaped earlier validation).","commonSituations":"Hand-written ini/toml with a case or spelling mistake; configs ported from other tools expecting \"httpsconnect\"; omitting the multiplexer field where it is required.","solutions":["Set multiplexer = \"httpconnect\" on the tcpmux proxy","Check for stray whitespace or wrong case in the value","Remove the field if your frp version defaults it correctly, but the literal \"httpconnect\" is the safe form"],"exampleFix":"# before\n[[proxies]]\ntype = \"tcpmux\"\nmultiplexer = \"httpsconnect\"\n\n# after\n[[proxies]]\ntype = \"tcpmux\"\nmultiplexer = \"httpconnect\"","handlingStrategy":"validation","validationCode":"// Validate tcpmux config before submitting it.\nif p.Type == \"tcpmux\" && p.Multiplexer != \"httpconnect\" {\n    return fmt.Errorf(\"tcpmux multiplexer must be 'httpconnect', got %q\", p.Multiplexer)\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Schema-validate generated frpc config against the documented enum for multiplexer","Copy working tcpmux examples verbatim instead of hand-typing the value"],"tags":["frps","tcpmux","config"],"backgroundTag":null,"analyzedSha":"6c8a8d0a97d03b44e9528d30b30c70cb9d61b405","analyzedAt":"2026-08-15T06:53:27.215Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}