aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@suse.cz>2011-03-25 13:38:39 +0100
committerMiklos Szeredi <mszeredi@suse.cz>2011-03-25 13:38:39 +0100
commiteac5268e87a9ffeefaa5edcd40392e14cd5aa1e3 (patch)
tree2cf597f4cfd9ff2dc1584a23444a055caa49517c
parent6d5e12e1b6abc2f07af547478f2497e06df988b1 (diff)
downloadsshfs-eac5268e87a9ffeefaa5edcd40392e14cd5aa1e3.tar
sshfs-eac5268e87a9ffeefaa5edcd40392e14cd5aa1e3.tar.gz
sshfs-eac5268e87a9ffeefaa5edcd40392e14cd5aa1e3.tar.bz2
sshfs-eac5268e87a9ffeefaa5edcd40392e14cd5aa1e3.zip
Fix possible deadlock on reconnection
Reported by Florian Zumbiehl
-rw-r--r--ChangeLog5
-rw-r--r--sshfs.c2
2 files changed, 7 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 203b98f..3ce4ed3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2011-03-25 Miklos Szeredi <miklos@szeredi.hu>
+
+ * Fix possible deadlock on reconnection. Reported by Florian
+ Zumbiehl
+
2011-01-25 Miklos Szeredi <miklos@szeredi.hu>
* Fix cleanup when ssh connection is terminated. This prevents
diff --git a/sshfs.c b/sshfs.c
index 81ee64a..739dbe3 100644
--- a/sshfs.c
+++ b/sshfs.c
@@ -1319,6 +1319,8 @@ static void *process_requests(void *data_)
close_conn();
g_hash_table_foreach_remove(sshfs.reqtab, (GHRFunc) clean_req, NULL);
sshfs.connver ++;
+ sshfs.outstanding_len = 0;
+ pthread_cond_broadcast(&sshfs.outstanding_cond);
pthread_mutex_unlock(&sshfs.lock);
if (!sshfs.reconnect) {