Обсуждение: I wish libpq add get_unresolv_host() and set_unresolv_host_ip() function

Поиск
Список
Период
Сортировка

I wish libpq add get_unresolv_host() and set_unresolv_host_ip() function

От
"32686647"
Дата:
I want to resolve the domain name asynchronously before connecting to the target;
one way is parse sql connect parameters string; like 
if ("host=" in conn_params) and ("hostaddr=" not in conn_params):
   get_domain_name_and_resolv_and_add_hostaddr_to_conn_params_string()

Another way is to add it  to libq;
I write a simple example:
    https://github.com/gamefunc/Aiolibpq_simple
I added the code to libq the build for use:
    https://github.com/gamefunc/Aiolibpq_simple/blob/main/Modify_Libpq_Source_Code.py
and use it in(awaitable<int> Aiolibpq::connect()):
    https://github.com/gamefunc/Aiolibpq_simple/blob/main/Aiolibpq_simple.cpp

    const char* host_name = nullptr;
    while((host_name = PQgetUnresolvHost(conn)) != nullptr){
        tcp::resolver resolver(loop);
        tcp::resolver::iterator ep_iter = 
            co_await resolver.async_resolve(
                host_name, "", use_awaitable);
        tcp::endpoint ep = *ep_iter;
        PQSetUnresolvHost(
            conn, host_name,
            ep.address().to_string().data(),
            ep.address().to_string().size());
    }// while()

Of course, there will be many situations in this code, 
for example, when one of the domain names fails to resolve the ip, it will boom;