gvfs r1679 - in trunk: . daemon
- From: carlosgc svn gnome org
- To: svn-commits-list gnome org
- Subject: gvfs r1679 - in trunk: . daemon
- Date: Tue, 25 Mar 2008 17:35:34 +0000 (GMT)
Author: carlosgc
Date: Tue Mar 25 17:35:33 2008
New Revision: 1679
URL: http://svn.gnome.org/viewvc/gvfs?rev=1679&view=rev
Log:
2008-03-25 Carlos Garcia Campos <carlosgc gnome org>
* daemon/gvfschannel.c: (got_request), (send_reply_cb):
Do not create new read/write jobs if the gvfschannel has been
cancelled. Fixes a crash in sftp backend (#522192).
Modified:
trunk/ChangeLog
trunk/daemon/gvfschannel.c
Modified: trunk/daemon/gvfschannel.c
==============================================================================
--- trunk/daemon/gvfschannel.c (original)
+++ trunk/daemon/gvfschannel.c Tue Mar 25 17:35:33 2008
@@ -84,6 +84,7 @@
GInputStream *command_stream;
GOutputStream *reply_stream;
int remote_fd;
+ gboolean cancelled;
GVfsBackendHandle backend_handle;
GVfsJob *current_job;
@@ -340,7 +341,8 @@
command = g_ntohl (request->command);
arg1 = g_ntohl (request->arg1);
- if (command == G_VFS_DAEMON_SOCKET_PROTOCOL_REQUEST_CANCEL)
+ if (command == G_VFS_DAEMON_SOCKET_PROTOCOL_REQUEST_CANCEL ||
+ channel->priv->cancelled)
{
if (arg1 == channel->priv->current_job_seq_nr &&
channel->priv->current_job != NULL)
@@ -364,6 +366,8 @@
}
}
+ channel->priv->cancelled = TRUE;
+
/* Cancel ops get no return */
g_free (data);
return;
@@ -604,7 +608,8 @@
g_vfs_job_source_new_job (G_VFS_JOB_SOURCE (channel), channel->priv->current_job);
}
/* Start queued request or readahead */
- else if (!start_queued_request (channel) &&
+ else if (!channel->priv->cancelled &&
+ !start_queued_request (channel) &&
class->readahead)
{
/* No queued requests, maybe we want to do a readahead call */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]