diff options
Diffstat (limited to '')
-rw-r--r-- | dirmngr/http.c | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/dirmngr/http.c b/dirmngr/http.c index 5f5775b2f..b74a9ef9a 100644 --- a/dirmngr/http.c +++ b/dirmngr/http.c @@ -261,6 +261,9 @@ static gpg_error_t (*tls_callback) (http_t, http_session_t, int); /* The list of files with trusted CA certificates. */ static strlist_t tls_ca_certlist; +/* The global callback for net activity. */ +static void (*netactivity_cb)(void); + #if defined(HAVE_W32_SYSTEM) && !defined(HTTP_NO_WSASTARTUP) @@ -499,6 +502,25 @@ http_register_tls_ca (const char *fname) } +/* Register a callback which is called every time the HTTP mode has + * made a successful connection to some server. */ +void +http_register_netactivity_cb (void (*cb)(void)) +{ + netactivity_cb = cb; +} + + +/* Call the netactivity callback if any. */ +static void +notify_netactivity (void) +{ + if (netactivity_cb) + netactivity_cb (); +} + + + #ifdef USE_TLS /* Free the TLS session associated with SESS, if any. */ static void @@ -2279,6 +2301,8 @@ connect_server (const char *server, unsigned short port, *r_host_not_found = 1; log_error ("can't connect to '%s': %s\n", server, strerror (errno)); } + else + notify_netactivity (); return sock; #else /*!ASSUAN_SOCK_TOR*/ @@ -2371,7 +2395,10 @@ connect_server (const char *server, unsigned short port, if (ret) last_errno = errno; else - connected = 1; + { + connected = 1; + notify_netactivity (); + } } free_dns_addrinfo (aibuf); } |