diff options
Diffstat (limited to 'libebackend/e-backend.c')
-rw-r--r-- | libebackend/e-backend.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/libebackend/e-backend.c b/libebackend/e-backend.c index 2d26a7ee7..e6b5deee2 100644 --- a/libebackend/e-backend.c +++ b/libebackend/e-backend.c @@ -110,6 +110,13 @@ backend_network_monitor_can_reach_cb (GObject *source_object, e_backend_set_online (backend, host_is_reachable); + if (!host_is_reachable) { + ESource *source; + + source = e_backend_get_source (backend); + e_source_set_connection_status (source, E_SOURCE_CONNECTION_STATUS_DISCONNECTED); + } + g_object_unref (backend); } @@ -1146,6 +1153,31 @@ e_backend_schedule_authenticate (EBackend *backend, } /** + * e_backend_ensure_source_status_connected: + * @backend: an #EBackend + * + * Makes sure that the associated ESource::connection-status is connected. This is + * useful in cases when the backend can connect to the destination without invoking + * EBackend::authenticate_sync, possibly through e_backend_schedule_authenticate(). + * + * Since: 3.16.4 + **/ +void +e_backend_ensure_source_status_connected (EBackend *backend) +{ + ESource *source; + + g_return_if_fail (E_IS_BACKEND (backend)); + + source = e_backend_get_source (backend); + + g_return_if_fail (E_IS_SOURCE (source)); + + if (e_source_get_connection_status (source) != E_SOURCE_CONNECTION_STATUS_CONNECTED) + e_source_set_connection_status (source, E_SOURCE_CONNECTION_STATUS_CONNECTED); +} + +/** * e_backend_get_user_prompter: * @backend: an #EBackend * |