]> andersk Git - moira.git/commitdiff
Revised EXCHANGE behavior.
authorzacheiss <zacheiss>
Mon, 13 Jul 2009 02:15:32 +0000 (02:15 +0000)
committerzacheiss <zacheiss>
Mon, 13 Jul 2009 02:15:32 +0000 (02:15 +0000)
gen/hesiod.pc
gen/mailhosts.gen

index c07fa43ff1341698880d95797390a4f691735669..1f4b9006eb5ae1cac0d0a015aa323f0b634490c6 100644 (file)
@@ -273,13 +273,21 @@ int do_passwd(void)
 
       if (eid != 0)
        {
-         /* eid will be for EXCHANGE.MIT.EDU, but we need to convert it to
-          * IMAP.EXCHANGE.MIT.EDU.
-          */
-         EXEC SQL SELECT mach_id INTO :eid FROM machine WHERE
-           name = 'IMAP.EXCHANGE.MIT.EDU';
+         /* Check for IMAP.  Can't use iid because it should be zero. */
+         EXEC SQL SELECT mach_id INTO :mid FROM filesys
+           WHERE label = :login || '.po' AND type = 'IMAP';
          if (sqlca.sqlcode == 0)
-             pid = eid;
+           pid = mid;
+         else
+           {
+             /* EXCHANGE user with no IMAP filesystem.  Give them
+              * IMAP.EXCHANGE.MIT.EDU instead of EXCHANGE.MIT.EDU.
+              */
+             EXEC SQL SELECT mach_id INTO :eid FROM machine
+               WHERE name = 'IMAP.EXCHANGE.MIT.EDU';
+             if (sqlca.sqlcode == 0)
+               pid = eid;
+           }
        }
 
       if (iid != 0)
index 892127e69b7e487aeee08bee9e1518eac1e1ced7..f00797cd3ad75a2fb7441c6d10a8c3f1e6d4a08e 100755 (executable)
@@ -32,10 +32,18 @@ while (($login, $potype, $exchange_id, $imap_id, $pop_id) = $sth->fetchrow_array
     $login =~ tr/a-z/A-Z/;
 
     if ($exchange_id != 0) {
-       ($mach_id) = $dbh->selectrow_array("SELECT mach_id FROM machine WHERE " .
-                                          "name = 'IMAP.EXCHANGE.MIT.EDU'");
+       $imap_filesystem = lc($login) . ".po";
+       ($mach_id) = $dbh->selectrow_array("SELECT mach_id FROM filesys " .
+                                          "WHERE label = " . $dbh->quote($imap_filesystem) .
+                                          "AND type = 'IMAP'");
        if (defined($mach_id)) {
            $pop_id = $mach_id;
+       } else {
+           ($mach_id) = $dbh->selectrow_array("SELECT mach_id FROM machine WHERE " .
+                                              "name = 'IMAP.EXCHANGE.MIT.EDU'");
+           if (defined($mach_id)) {
+               $pop_id = $mach_id;
+           }
        }
     }
 
This page took 0.04405 seconds and 5 git commands to generate.