diff --git a/lib/private/hook.php b/lib/private/hook.php
index 30e22847c7f1b0410a5c9095055beed7e1cac6c1..c9ca58f779e7084ebab1af781d7a3bb6f772d9a0 100644
--- a/lib/private/hook.php
+++ b/lib/private/hook.php
@@ -31,6 +31,12 @@ class OC_Hook{
 			self::$registered[$signalclass][$signalname] = array();
 		}
 
+		// dont connect hooks twice
+		foreach (self::$registered[$signalclass][$signalname] as $hook) {
+			if ($hook['class'] === $slotclass and $hook['name'] === $slotname) {
+				return false;
+			}
+		}
 		// Connect the hook handler to the requested emitter
 		self::$registered[$signalclass][$signalname][] = array(
 				"class" => $slotclass,