diff --git a/login_destination.module b/login_destination.module
index 4ed0ed2..59f02c9 100644
--- a/login_destination.module
+++ b/login_destination.module
@@ -285,6 +285,15 @@ function login_destination_drupal_goto_alter(&$path, &$options, &$http_response_
   // Note that this functionality cannot be backported do 6.x as Drupal 6 does
   // not call drupal_alter for drupal_goto.
 
+  // Special case for the legal module.
+  // If we don't let the legal module goto it's legal agreement then the user
+  // cannot agree and login will just fail silently.
+  // The legal module will respect our destination once the user has submitted
+  // the legal agreement form.
+  if ($path && substr($path, 0, 13) == 'legal_accept/') {
+    return;
+  }
+
   // This actually may be used also by templates.
   if (isset($GLOBALS['destination'])) {
     $destination = $GLOBALS['destination'];
