gchar *msg;
service = CAMEL_SERVICE (diary->store);
- session = camel_service_get_session (service);
+ session = camel_service_ref_session (service);
msg = g_strdup_printf (
_("Could not write log entry: %s\n"
session, CAMEL_SESSION_ALERT_ERROR, msg, NULL, NULL);
g_free (msg);
+ g_object_unref (session);
+
fclose (diary->file);
diary->file = NULL;
}
if (folder)
g_hash_table_insert (diary->folders, name, folder);
else {
+ CamelService *service;
+ CamelSession *session;
+
+ service = CAMEL_SERVICE (diary->store);
+ session = camel_service_ref_session (service);
+
msg = g_strdup_printf (
_("Could not open '%s':\n%s\n"
"Changes made to this folder "
"will not be resynchronized."),
name, error->message);
- g_error_free (error);
camel_session_alert_user (
- camel_service_get_session (CAMEL_SERVICE (diary->store)),
+ session,
CAMEL_SESSION_ALERT_WARNING,
msg, NULL, cancellable);
g_free (msg);
+
+ g_object_unref (session);
+ g_error_free (error);
+
g_free (name);
}
} else
parent_store = camel_folder_get_parent_store (folder);
service = CAMEL_SERVICE (parent_store);
- session = camel_service_get_session (service);
+ session = camel_service_ref_session (service);
sync_folder = camel_disco_folder_get_offline_sync (
CAMEL_DISCO_FOLDER (folder));
(CamelSessionCallback) cdf_sync_offline,
data, (GDestroyNotify) cdf_sync_free);
}
+
+ g_object_unref (session);
}
static void
G_OBJECT_CLASS (camel_disco_store_parent_class)->constructed (object);
service = CAMEL_SERVICE (object);
- session = camel_service_get_session (service);
+ session = camel_service_ref_session (service);
if (camel_session_get_online (session))
disco->status = CAMEL_DISCO_STORE_ONLINE;
g_signal_connect (
service, "notify::connection-status",
G_CALLBACK (disco_store_update_status), NULL);
+
+ g_object_unref (session);
}
static gboolean
store = CAMEL_STORE (disco_store);
service = CAMEL_SERVICE (disco_store);
- session = camel_service_get_session (service);
+ session = camel_service_ref_session (service);
network_available = camel_session_get_network_available (session);
+ g_object_unref (session);
+
store_is_online = (disco_store->status == CAMEL_DISCO_STORE_ONLINE);
going_offline = (status == CAMEL_DISCO_STORE_OFFLINE);
CAMEL_IS_DISCO_STORE (store), CAMEL_DISCO_STORE_ONLINE);
service = CAMEL_SERVICE (store);
- session = camel_service_get_session (service);
+ session = camel_service_ref_session (service);
if (store->status != CAMEL_DISCO_STORE_OFFLINE
&& !camel_session_get_online (session))
store->status = CAMEL_DISCO_STORE_OFFLINE;
+ g_object_unref (session);
+
return store->status;
}
CamelService *service;
CamelSession *session;
CamelSettings *settings;
+ gboolean network_available;
gboolean store_is_online;
gboolean sync_store;
store = CAMEL_STORE (disco_store);
service = CAMEL_SERVICE (disco_store);
- session = camel_service_get_session (service);
+
+ session = camel_service_ref_session (service);
+ network_available = camel_session_get_network_available (session);
+ g_object_unref (session);
/* We can't prepare for offline if we're already offline. */
- if (!camel_session_get_network_available (session))
+ if (!network_available)
return;
/* Sync the folder fully if we've been told to
return FALSE;
}
- parent_store = camel_folder_get_parent_store (summary->priv->folder);
- session = camel_service_get_session (CAMEL_SERVICE (parent_store));
-
if (time (NULL) - summary->priv->cache_load_time < SUMMARY_CACHE_DROP)
return TRUE;
+ parent_store = camel_folder_get_parent_store (summary->priv->folder);
+ session = camel_service_ref_session (CAMEL_SERVICE (parent_store));
+
camel_session_submit_job (
session,
(CamelSessionCallback) remove_cache,
g_object_ref (summary),
(GDestroyNotify) g_object_unref);
+ g_object_unref (session);
+
return TRUE;
}
folder_name = camel_folder_get_full_name (summary->priv->folder);
parent_store = camel_folder_get_parent_store (summary->priv->folder);
- session = camel_service_get_session (CAMEL_SERVICE (parent_store));
+ session = camel_service_ref_session (CAMEL_SERVICE (parent_store));
cdb = parent_store->cdb_r;
data.columns_hash = NULL;
g_object_ref (summary->priv->folder),
(GDestroyNotify) g_object_unref);
+ g_object_unref (session);
+
return ret == 0 ? 0 : -1;
}
g_return_if_fail (info != NULL);
- parent_store = camel_folder_get_parent_store (folder);
- session = camel_service_get_session (CAMEL_SERVICE (parent_store));
- junk_filter = camel_session_get_junk_filter (session);
-
camel_folder_lock (folder, CAMEL_FOLDER_CHANGE_LOCK);
if (folder->priv->frozen) {
camel_folder_change_info_cat (folder->priv->changed_frozen, info);
}
camel_folder_unlock (folder, CAMEL_FOLDER_CHANGE_LOCK);
+ parent_store = camel_folder_get_parent_store (folder);
+ session = camel_service_ref_session (CAMEL_SERVICE (parent_store));
+ junk_filter = camel_session_get_junk_filter (session);
+
if (junk_filter != NULL && info->uid_changed->len) {
CamelMessageFlags flags;
g_signal_stop_emission (folder, signals[CHANGED], 0);
}
+
+ g_object_unref (session);
}
static void
camel_db_delete_folder (parent_store->cdb_w, full_name, NULL);
service = CAMEL_SERVICE (parent_store);
- session = camel_service_get_session (service);
+ session = camel_service_ref_session (service);
signal_data = g_slice_new0 (SignalData);
signal_data->folder = g_object_ref (folder);
session, G_PRIORITY_HIGH_IDLE,
folder_emit_deleted_cb,
signal_data, (GDestroyNotify) signal_data_free);
+
+ g_object_unref (session);
}
/**
camel_db_rename_folder (parent_store->cdb_w, old_name, new_name, NULL);
service = CAMEL_SERVICE (parent_store);
- session = camel_service_get_session (service);
+ session = camel_service_ref_session (service);
signal_data = g_slice_new0 (SignalData);
signal_data->folder = g_object_ref (folder);
session, G_PRIORITY_HIGH_IDLE,
folder_emit_renamed_cb,
signal_data, (GDestroyNotify) signal_data_free);
+
+ g_object_unref (session);
}
/**
parent_store = camel_folder_get_parent_store (folder);
service = CAMEL_SERVICE (parent_store);
- session = camel_service_get_session (service);
+ session = camel_service_ref_session (service);
pending_changes = camel_folder_change_info_new ();
folder->priv->pending_changes = pending_changes;
session, G_PRIORITY_LOW,
folder_emit_changed_cb,
signal_data, (GDestroyNotify) signal_data_free);
+
+ g_object_unref (session);
}
camel_folder_change_info_cat (pending_changes, changes);
store = camel_imapx_server_ref_store (is);
service = CAMEL_SERVICE (store);
- session = camel_service_get_session (service);
+ session = camel_service_ref_session (service);
settings = camel_service_ref_settings (service);
exit:
g_free (mechanism);
+ g_object_unref (session);
g_object_unref (store);
return success;
CamelIMAPXStore *istore = (CamelIMAPXStore *) store;
CamelFolderInfo * fi= NULL;
CamelService *service;
- CamelSession *session;
CamelSettings *settings;
gboolean initial_setup = FALSE;
gboolean use_subscriptions;
gchar *pattern;
service = CAMEL_SERVICE (store);
- session = camel_service_get_session (service);
settings = camel_service_ref_settings (service);
time_t now = time (NULL);
if (now - istore->last_refresh_time > FINFO_REFRESH_INTERVAL) {
+ CamelSession *session;
+
istore->last_refresh_time = time (NULL);
+ session = camel_service_ref_session (service);
+
camel_session_submit_job (
session, (CamelSessionCallback)
imapx_refresh_finfo,
g_object_ref (store),
(GDestroyNotify) g_object_unref);
+
+ g_object_unref (session);
}
fi = get_folder_info_offline (store, top, flags, error);
gchar *host;
gint status;
- session = camel_service_get_session (CAMEL_SERVICE (service));
+ session = camel_service_ref_session (CAMEL_SERVICE (service));
settings = camel_service_ref_settings (CAMEL_SERVICE (service));
g_return_val_if_fail (CAMEL_IS_NETWORK_SETTINGS (settings), NULL);
g_free (host);
+ g_object_unref (session);
+
return stream;
}
parent_store = camel_folder_get_parent_store (folder);
service = CAMEL_SERVICE (parent_store);
- session = camel_service_get_session (service);
+ session = camel_service_ref_session (service);
settings = camel_service_ref_settings (service);
offline_folder_downsync_background, data,
(GDestroyNotify) offline_downsync_data_free);
}
+
+ g_object_unref (session);
}
static void
G_OBJECT_CLASS (camel_offline_store_parent_class)->
constructed (object);
- session = camel_service_get_session (CAMEL_SERVICE (object));
+ session = camel_service_ref_session (CAMEL_SERVICE (object));
priv->online = camel_session_get_online (session);
+ g_object_unref (session);
}
static void
return TRUE;
service = CAMEL_SERVICE (store);
- session = camel_service_get_session (service);
+ session = camel_service_ref_session (service);
network_available = camel_session_get_network_available (session);
store_is_online = camel_offline_store_get_online (store);
g_object_unref (settings);
+ g_object_unref (session);
+
/* Returning to online mode is the simpler case. */
if (!store_is_online) {
store->priv->online = online;
g_return_val_if_fail (CAMEL_IS_OFFLINE_STORE (store), FALSE);
service = CAMEL_SERVICE (store);
- session = camel_service_get_session (service);
+ session = camel_service_ref_session (service);
network_available = camel_session_get_network_available (session);
store_is_online = camel_offline_store_get_online (store);
g_object_unref (settings);
+ g_object_unref (session);
+
if (network_available && store_is_online) {
GPtrArray *folders;
guint ii;
gchar *pop_uid;
service = camel_sasl_get_service (sasl);
- session = camel_service_get_session (service);
+ session = camel_service_ref_session (service);
camel_sasl_set_authenticated (sasl, FALSE);
else
service = NULL;
+ g_object_unref (session);
+
if (service == NULL) {
g_set_error (
error, CAMEL_SERVICE_ERROR,
gchar *old_data_dir;
provider = camel_service_get_provider (service);
- session = camel_service_get_session (service);
url = camel_service_new_camel_url (service);
allows_host = CAMEL_PROVIDER_ALLOWS (provider, CAMEL_URL_PART_HOST);
g_string_append (path, url->path);
}
+ session = camel_service_ref_session (service);
+
base_dir = camel_session_get_user_data_dir (session);
old_data_dir = g_build_filename (base_dir, path->str, NULL);
+ g_object_unref (session);
+
g_string_free (path, TRUE);
if (!g_file_test (old_data_dir, G_FILE_TEST_IS_DIR)) {
{
CamelSession *session;
- session = camel_service_get_session (service);
+ session = camel_service_ref_session (service);
/* Prioritize ahead of GTK+ redraws. */
camel_session_idle_add (
service_notify_connection_status_cb,
g_object_ref (service),
(GDestroyNotify) g_object_unref);
+
+ g_object_unref (session);
}
static void
return;
case PROP_SESSION:
- g_value_set_object (
- value, camel_service_get_session (
+ g_value_take_object (
+ value, camel_service_ref_session (
CAMEL_SERVICE (object)));
return;
G_OBJECT_CLASS (camel_service_parent_class)->constructed (object);
service = CAMEL_SERVICE (object);
- session = camel_service_get_session (service);
+ session = camel_service_ref_session (service);
uid = camel_service_get_uid (service);
base_dir = camel_session_get_user_cache_dir (session);
service->priv->user_cache_dir = g_build_filename (base_dir, uid, NULL);
+
+ g_object_unref (session);
}
static gchar *
g_return_if_fail (CAMEL_IS_SESSION (session));
g_return_if_fail (CAMEL_IS_SERVICE (service));
- /* Verify the service belongs to this session. */
- g_return_if_fail (camel_service_get_session (service) == session);
-
class = CAMEL_SESSION_GET_CLASS (session);
g_return_if_fail (class->remove_service != NULL);
g_return_if_fail (CAMEL_IS_STORE (store));
g_return_if_fail (folder_info != NULL);
- session = camel_service_get_session (CAMEL_SERVICE (store));
+ session = camel_service_ref_session (CAMEL_SERVICE (store));
signal_data = g_slice_new0 (SignalData);
signal_data->store = g_object_ref (store);
session, G_PRIORITY_HIGH_IDLE,
store_emit_folder_created_cb,
signal_data, (GDestroyNotify) signal_data_free);
+
+ g_object_unref (session);
}
/**
g_return_if_fail (CAMEL_IS_STORE (store));
g_return_if_fail (folder_info != NULL);
- session = camel_service_get_session (CAMEL_SERVICE (store));
+ session = camel_service_ref_session (CAMEL_SERVICE (store));
signal_data = g_slice_new0 (SignalData);
signal_data->store = g_object_ref (store);
session, G_PRIORITY_HIGH_IDLE,
store_emit_folder_deleted_cb,
signal_data, (GDestroyNotify) signal_data_free);
+
+ g_object_unref (session);
}
/**
g_return_if_fail (CAMEL_IS_STORE (store));
g_return_if_fail (CAMEL_IS_FOLDER (folder));
- session = camel_service_get_session (CAMEL_SERVICE (store));
+ session = camel_service_ref_session (CAMEL_SERVICE (store));
signal_data = g_slice_new0 (SignalData);
signal_data->store = g_object_ref (store);
session, G_PRIORITY_HIGH_IDLE,
store_emit_folder_opened_cb,
signal_data, (GDestroyNotify) signal_data_free);
+
+ g_object_unref (session);
}
/**
g_return_if_fail (old_name != NULL);
g_return_if_fail (folder_info != NULL);
- session = camel_service_get_session (CAMEL_SERVICE (store));
+ session = camel_service_ref_session (CAMEL_SERVICE (store));
signal_data = g_slice_new0 (SignalData);
signal_data->store = g_object_ref (store);
session, G_PRIORITY_HIGH_IDLE,
store_emit_folder_renamed_cb,
signal_data, (GDestroyNotify) signal_data_free);
+
+ g_object_unref (session);
}
static void
g_return_if_fail (folder_info != NULL);
service = CAMEL_SERVICE (subscribable);
- session = camel_service_get_session (service);
+ session = camel_service_ref_session (service);
signal_data = g_slice_new0 (SignalData);
signal_data->subscribable = g_object_ref (subscribable);
session, G_PRIORITY_HIGH_IDLE,
subscribable_emit_folder_subscribed_cb,
signal_data, (GDestroyNotify) signal_data_free);
+
+ g_object_unref (session);
}
/**
g_return_if_fail (folder_info != NULL);
service = CAMEL_SERVICE (subscribable);
- session = camel_service_get_session (service);
+ session = camel_service_ref_session (service);
signal_data = g_slice_new0 (SignalData);
signal_data->subscribable = g_object_ref (subscribable);
session, G_PRIORITY_HIGH_IDLE,
subscribable_emit_folder_unsubscribed_cb,
signal_data, (GDestroyNotify) signal_data_free);
+
+ g_object_unref (session);
}
folder = CAMEL_FOLDER (vee_folder);
parent_store = camel_folder_get_parent_store (folder);
- session = camel_service_get_session (CAMEL_SERVICE (parent_store));
+ session = camel_service_ref_session (CAMEL_SERVICE (parent_store));
g_async_queue_lock (vee_folder->priv->change_queue);
}
g_async_queue_unlock (vee_folder->priv->change_queue);
+
+ g_object_unref (session);
}
static void
/* this operation requires cancellable, thus if called
* without it then run in a dedicated thread */
if (!cancellable) {
+ CamelService *service;
CamelSession *session;
- session = camel_service_get_session (CAMEL_SERVICE (vstore));
+ service = CAMEL_SERVICE (vstore);
+ session = camel_service_ref_session (service);
camel_session_submit_job (
session, (CamelSessionCallback)
vee_store_rebuild_unmatched_folder,
g_object_ref (vstore),
g_object_unref);
+
+ g_object_unref (session);
} else {
vee_store_rebuild_unmatched_folder (NULL, cancellable, vstore, error);
}
guint len;
gchar *host, *path, *user, *mechanism;
- session = camel_service_get_session (service);
+ session = camel_service_ref_session (service);
user_cache_dir = camel_service_get_user_cache_dir (service);
settings = camel_service_ref_settings (service);
g_free (user);
g_free (mechanism);
+ g_object_unref (session);
+
return retval;
}
va_list ap;
service = CAMEL_SERVICE (store);
- session = camel_service_get_session (service);
+ session = camel_service_ref_session (service);
retry = 0;
va_end (ap);
if (ret == NNTP_AUTH_REQUIRED) {
- if (!camel_session_authenticate_sync (
- session, service, NULL, cancellable, error))
- return -1;
- go = TRUE;
+ go = camel_session_authenticate_sync (
+ session, service, NULL, cancellable, error);
+ if (!go)
+ ret = -1;
}
} while (retry < 3 && go);
+ g_object_unref (session);
+
return ret;
}
{
CamelService *service;
CamelSession *session;
+ gboolean success;
const gchar *full_name = NULL;
const guchar *p;
va_list ap;
GError *local_error = NULL;
service = CAMEL_SERVICE (store);
- session = camel_service_get_session (service);
if (((CamelDiscoStore *) store)->status == CAMEL_DISCO_STORE_OFFLINE) {
g_set_error (
error:
switch (ret) {
case NNTP_AUTH_REQUIRED:
- if (!camel_session_authenticate_sync (
- session, service, NULL, cancellable, error))
+ session = camel_service_ref_session (service);
+ success = camel_session_authenticate_sync (
+ session, service, NULL, cancellable, error);
+ g_object_unref (session);
+
+ if (!success)
return -1;
retry--;
ret = -1;
gboolean success = TRUE;
gchar *mechanism;
- session = camel_service_get_session (service);
+ session = camel_service_ref_session (service);
user_data_dir = camel_service_get_user_data_dir (service);
settings = camel_service_ref_settings (service);
exit:
g_free (mechanism);
+ g_object_unref (session);
+
return success;
}
if (auth_required) {
CamelSession *session;
- session = camel_service_get_session (service);
+ session = camel_service_ref_session (service);
if (g_hash_table_lookup (transport->authtypes, mechanism)) {
success = camel_session_authenticate_sync (
success = FALSE;
}
+ g_object_unref (session);
+
if (!success)
camel_service_disconnect_sync (
service, TRUE, cancellable, NULL);