--- ../link-5-2.2/link.module	2008-06-23 15:53:58.000000000 -0500
+++ link.module	2008-06-24 03:22:48.000000000 -0500
@@ -10,7 +10,7 @@
 define('LINK_INTERNAL', 'internal');
 define('LINK_FRONT', 'front');
 define('LINK_EMAIL', 'email');
-define('LINK_DOMAINS', 'aero|arpa|biz|com|cat|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel|mobi');
+define('LINK_DOMAINS', 'aero|arpa|biz|com|cat|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel|mobi|local');
 
 /**
  * Implementation of hook_menu().
@@ -847,13 +847,13 @@ function link_validate_url($text) {
 
   $protocol = '((' . implode("|", $allowed_protocols) . '):\/\/)';
   $authentication = '([a-z0-9]+(:[a-z0-9]+)?@)';
-  $domain = '((([a-z0-9]([a-z0-9\-_\[\]]*\.))+)('. LINK_DOMAINS .'|[a-z]{2}))';
+  $domain = '(([a-z0-9]([a-z0-9\-_\[\]])*)(\.(([a-z0-9\-_\[\]])+\.)*('. LINK_DOMAINS .'|[a-z]{2}))?)';
   $ipv4 = '([0-9]{1,3}(\.[0-9]{1,3}){3})';
   $ipv6 = '([0-9a-fA-F]{1,4}(\:[0-9a-fA-F]{1,4}){7})';
   $port = '(:([0-9]{1,5}))';
 
   // Pattern specific to eternal links.
-  $external_pattern = '/^' . $protocol . '?'. $authentication . '?' . '(' . $domain . '|' . $ipv4 . '|' . $ipv6 . ' |localhost)' . $port . '?';
+  $external_pattern = '/^' . $protocol . '?' . $authentication . '?' . '(' . $domain . '|' . $ipv4 . '|' . $ipv6 . ' |localhost)' . $port . '?';
 
   // Pattern specific to internal links.
   $internal_pattern = "/^([a-z0-9_\-+\[\]]+)";
@@ -869,17 +869,23 @@ function link_validate_url($text) {
   $user = '[a-zA-Z0-9_\-\.\+\^!#\$%&*+\/\=\?\`\|\{\}~\'\[\]]+';
   $email_pattern = '/^mailto:' . $user . '@' . '(' . $domain . '|' . $ipv4 .'|'. $ipv6 . '|localhost)' . $query . '$/';
 
-  if (preg_match($external_pattern . $end, $text)) {
-    return LINK_EXTERNAL;
-  }
-  elseif (preg_match($internal_pattern . $end, $text)) {
-    return LINK_INTERNAL;
+  // Since each conditional is terminating, don't collapse into an 
+  // elseif structure
+  if (strpos($text, '<front>') === 0) {
+    return LINK_FRONT;
   }
-  elseif (in_array('mailto', $allowed_protocols) && preg_match($email_pattern, $text)) {
+
+  if (in_array('mailto', $allowed_protocols) && preg_match($email_pattern, $text)) {
     return LINK_EMAIL;
   }
-  elseif (strpos($text, '<front>') === 0) {
-    return LINK_FRONT;
+
+  if (preg_match($internal_pattern . $end, $text)) {
+    return LINK_INTERNAL;
   }
+
+  if (preg_match($external_pattern . $end, $text)) {
+    return LINK_EXTERNAL;
+  }
+
   return FALSE;
 }
