(
*,
addr,
loop,
params,
config,
connection_class,
record_class
)
| 1020 | |
| 1021 | |
| 1022 | async def _connect_addr( |
| 1023 | *, |
| 1024 | addr, |
| 1025 | loop, |
| 1026 | params, |
| 1027 | config, |
| 1028 | connection_class, |
| 1029 | record_class |
| 1030 | ): |
| 1031 | assert loop is not None |
| 1032 | |
| 1033 | params_input = params |
| 1034 | if callable(params.password): |
| 1035 | password = params.password() |
| 1036 | if inspect.isawaitable(password): |
| 1037 | password = await password |
| 1038 | |
| 1039 | params = params._replace(password=password) |
| 1040 | args = (addr, loop, config, connection_class, record_class, params_input) |
| 1041 | |
| 1042 | # prepare the params (which attempt has ssl) for the 2 attempts |
| 1043 | if params.sslmode == SSLMode.allow: |
| 1044 | params_retry = params |
| 1045 | params = params._replace(ssl=None) |
| 1046 | elif params.sslmode == SSLMode.prefer: |
| 1047 | params_retry = params._replace(ssl=None) |
| 1048 | else: |
| 1049 | # skip retry if we don't have to |
| 1050 | return await __connect_addr(params, False, *args) |
| 1051 | |
| 1052 | # first attempt |
| 1053 | try: |
| 1054 | return await __connect_addr(params, True, *args) |
| 1055 | except _RetryConnectSignal: |
| 1056 | pass |
| 1057 | |
| 1058 | # second attempt |
| 1059 | return await __connect_addr(params_retry, False, *args) |
| 1060 | |
| 1061 | |
| 1062 | class _RetryConnectSignal(Exception): |
no test coverage detected
searching dependent graphs…