Evas cserve2: Fix client crashes when a file changed

Clients must ignore changed file entries as they are not valid
anymore. The server will also mark the entry as invalid in case
of file update.

@fix

(cherry picked from commit 320a9f18c5)
This commit is contained in:
Jean-Philippe Andre 2014-03-18 12:11:35 +09:00
parent cd21cf50d2
commit 5671816193
2 changed files with 6 additions and 1 deletions

View File

@ -1712,6 +1712,7 @@ _file_changed_cb(const char *path EINA_UNUSED, Eina_Bool deleted EINA_UNUSED, vo
if (fd)
{
fd->changed = EINA_TRUE;
fd->valid = EINA_FALSE;
_file_id_free(fd);
eina_hash_set(file_entries, &fd->id, NULL);
}

View File

@ -2735,7 +2735,9 @@ _shared_image_entry_file_data_find(Image_Entry *ie)
if (fe->server_file_id)
{
if ((fdata = _shared_file_data_get_by_id(fe->server_file_id)) != NULL)
return fdata;
if (!fdata->changed)
return fdata;
fe->server_file_id = 0;
}
// Check hash
@ -2757,6 +2759,7 @@ _shared_image_entry_file_data_find(Image_Entry *ie)
fd = &(_index.files.entries.filedata[k]);
if (!fd->id) break;
if (!fd->refcount) continue;
if (fd->changed) continue;
key = _shared_string_safe_get(fd->key);
file = _shared_string_safe_get(fd->path);
@ -3106,6 +3109,7 @@ _shared_image_entry_image_data_find(Image_Entry *ie)
continue;
}
if (fd->changed || !fd->valid) continue;
key = _shared_string_safe_get(fd->key);
file = _shared_string_safe_get(fd->path);
if (!file)