{"record":{"id":"667ad56cf6e43015","repo":"denoland/deno","slug":"unsupported-transport-transport-667ad5","errorCode":null,"errorMessage":"Unsupported transport: '${transport}'","messagePattern":"Unsupported transport: '(.+?)'","errorType":"exception","errorClass":"TypeError","httpStatus":null,"severity":"error","filePath":"ext/net/02_tls.js","lineNumber":69,"sourceCode":"    return op_tls_peer_certificate(this.#rid, detailed);\n  }\n}\n\nasync function connectTls({\n  port,\n  hostname = \"127.0.0.1\",\n  transport = \"tcp\",\n  caCerts = [],\n  alpnProtocols = undefined,\n  keyFormat = undefined,\n  cert = undefined,\n  key = undefined,\n  unsafelyDisableHostnameVerification = false,\n  autoSelectFamily = true,\n  autoSelectFamilyAttemptDelay = 250,\n}) {\n  if (transport !== \"tcp\") {\n    throw new TypeError(`Unsupported transport: '${transport}'`);\n  }\n\n  const keyPair = loadTlsKeyPair(\"Deno.connectTls\", {\n    keyFormat,\n    cert,\n    key,\n  });\n  // TODO(mmastrac): We only expose this feature via symbol for now. This should actually be a feature\n  // in Deno.connectTls, however.\n  const serverName = arguments[0][serverNameSymbol] ?? null;\n  const { 0: rid, 1: localAddr, 2: remoteAddr } = await op_net_connect_tls(\n    { hostname, port },\n    { caCerts, alpnProtocols, serverName, unsafelyDisableHostnameVerification },\n    keyPair,\n    { autoSelectFamily, autoSelectFamilyAttemptDelay },\n  );\n  localAddr.transport = \"tcp\";\n  remoteAddr.transport = \"tcp\";","sourceCodeStart":51,"sourceCodeEnd":87,"githubUrl":"https://github.com/denoland/deno/blob/89f33cbef296a2b287f323d42de54c871fa69c77/ext/net/02_tls.js#L51-L87","documentation":"Deno.connectTls defaults transport to 'tcp' and immediately throws this TypeError for any other value. TLS in Deno is implemented only over TCP - there is no TLS over Unix sockets and no DTLS (TLS over UDP).","triggerScenarios":"Deno.connectTls({ transport: 'unix', path: '/run/s.sock' }); transport: 'udp'; any truthy value other than 'tcp'.","commonSituations":"Trying to reach TLS services over Unix sockets (Postgres, Redis behind local proxies); shared option builders reused for both connect and connectTls.","solutions":["Remove the transport option (it defaults to 'tcp') or set it explicitly to 'tcp'","For Unix-socket targets use Deno.connect({ transport: 'unix' }) without TLS","If you need TLS on a local socket, terminate TLS at a local TCP front (e.g. stunnel) and connect plain"],"exampleFix":"// before\nawait Deno.connectTls({ transport: \"unix\", path: \"/var/run/tls.sock\" });\n\n// after\nawait Deno.connectTls({ hostname: \"example.com\", port: 443 });","handlingStrategy":"validation","validationCode":"function assertTlsTransport(opts: { transport?: string }): void {\n  if (opts.transport !== undefined && opts.transport !== \"tcp\") {\n    throw new Error(\n      `connectTls only supports transport 'tcp' (TLS over Unix/UDP is unsupported), got: ${String(opts.transport)}`,\n    );\n  }\n}","typeGuard":"function isTlsTransport(t: unknown): boolean {\n  return t === undefined || t === \"tcp\";\n}","tryCatchPattern":null,"preventionTips":["Do not reuse generic connect option builders for connectTls","Keep TLS targets as hostname/port pairs, not sockets","Terminate TLS locally (stunnel or similar) if you must bridge to a Unix socket"],"tags":["network","tls","transport","validation","deno"],"backgroundTag":null,"analyzedSha":"89f33cbef296a2b287f323d42de54c871fa69c77","analyzedAt":"2026-08-16T07:54:21.310Z","schemaVersion":2},"datasetVersion":"2026-08-16T08:17:34.114Z"}