X-Git-Url: https://git.jankratochvil.net/?a=blobdiff_plain;f=src%2Flibcaptive%2Fclient%2Ffile-parent.c;h=cf680b6f9ab1fa57da2be9617d621d49708493cf;hb=b94095a878e67492771b2bc956fafb1cb74d9da9;hp=038bdc5c1d4270ea7ac3a216240e43cbc16f602a;hpb=401bfa7d9b8deacbcea53a97f10c5b025121e592;p=captive.git diff --git a/src/libcaptive/client/file-parent.c b/src/libcaptive/client/file-parent.c index 038bdc5..cf680b6 100644 --- a/src/libcaptive/client/file-parent.c +++ b/src/libcaptive/client/file-parent.c @@ -348,6 +348,7 @@ static GnomeVFSResult captive_file_parent_read(CaptiveFileObject *captive_file_o CaptiveFileParentObject *captive_file_parent_object; GnomeVFSResult r; gint retried=0; +gint retried_commit=0; g_return_val_if_fail(CAPTIVE_FILE_PARENT_IS_OBJECT(captive_file_object),GNOME_VFS_ERROR_BAD_PARAMETERS); g_return_val_if_fail(buffer!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS); @@ -360,8 +361,17 @@ gint retried=0; if (GNOME_VFS_OK!=(r=captive_parent_connector_open(CAPTIVE_PARENT_CONNECTOR(captive_file_parent_object)))) return r; if (GNOME_VFS_ERROR_SERVICE_NOT_AVAILABLE - !=(r=captive_sandbox_parent_file_read(captive_file_parent_object,buffer,num_bytes,bytes_read_return))) + !=(r=captive_sandbox_parent_file_read(captive_file_parent_object,buffer,num_bytes,bytes_read_return))) { + if (GNOME_VFS_ERROR_SERVICE_OBSOLETE==r) { + if (!retried_commit++) { + if (GNOME_VFS_OK!=(r=captive_vfs_commit(captive_file_object->vfs))) + return r; + retried=0; + continue; + } + } return r; + } } while (!retried++); return r; }