MCPcopy Index your code
hub / github.com/MagicStack/asyncpg / __connect_addr

Function __connect_addr

asyncpg/connect_utils.py:1066–1138  ·  view source on GitHub ↗
(
    params,
    retry,
    addr,
    loop,
    config,
    connection_class,
    record_class,
    params_input,
)

Source from the content-addressed store, hash-verified

1064
1065
1066async def __connect_addr(
1067 params,
1068 retry,
1069 addr,
1070 loop,
1071 config,
1072 connection_class,
1073 record_class,
1074 params_input,
1075):
1076 connected = _create_future(loop)
1077
1078 proto_factory = lambda: protocol.Protocol(
1079 addr, connected, params, record_class, loop)
1080
1081 if isinstance(addr, str):
1082 # UNIX socket
1083 connector = loop.create_unix_connection(proto_factory, addr)
1084
1085 elif params.ssl and params.ssl_negotiation is SSLNegotiation.direct:
1086 # if ssl and ssl_negotiation is `direct`, skip STARTTLS and perform
1087 # direct SSL connection
1088 connector = loop.create_connection(
1089 proto_factory, *addr, ssl=params.ssl
1090 )
1091
1092 elif params.ssl:
1093 connector = _create_ssl_connection(
1094 proto_factory, *addr, loop=loop, ssl_context=params.ssl,
1095 ssl_is_advisory=params.sslmode == SSLMode.prefer)
1096 else:
1097 connector = loop.create_connection(proto_factory, *addr)
1098
1099 tr, pr = await connector
1100
1101 try:
1102 await connected
1103 except (
1104 exceptions.InvalidAuthorizationSpecificationError,
1105 exceptions.ConnectionDoesNotExistError, # seen on Windows
1106 ):
1107 tr.close()
1108
1109 # retry=True here is a redundant check because we don't want to
1110 # accidentally raise the internal _RetryConnectSignal to the user
1111 if retry and (
1112 params.sslmode == SSLMode.allow and not pr.is_ssl or
1113 params.sslmode == SSLMode.prefer and pr.is_ssl
1114 ):
1115 # Trigger retry when:
1116 # 1. First attempt with sslmode=allow, ssl=None failed
1117 # 2. First attempt with sslmode=prefer, ssl=ctx failed while the
1118 # server claimed to support SSL (returning "S" for SSLRequest)
1119 # (likely because pg_hba.conf rejected the connection)
1120 raise _RetryConnectSignal()
1121
1122 else:
1123 # but will NOT retry if:

Callers 1

_connect_addrFunction · 0.85

Calls 4

_create_futureFunction · 0.85
_create_ssl_connectionFunction · 0.85
_RetryConnectSignalClass · 0.85
closeMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…