From 736ea7721c1f97ef25572e5d84add7c7927dd752 Mon Sep 17 00:00:00 2001 From: zacheiss Date: Mon, 13 Jul 2009 02:15:32 +0000 Subject: [PATCH] Revised EXCHANGE behavior. --- gen/hesiod.pc | 20 ++++++++++++++------ gen/mailhosts.gen | 12 ++++++++++-- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/gen/hesiod.pc b/gen/hesiod.pc index c07fa43f..1f4b9006 100644 --- a/gen/hesiod.pc +++ b/gen/hesiod.pc @@ -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) diff --git a/gen/mailhosts.gen b/gen/mailhosts.gen index 892127e6..f00797cd 100755 --- a/gen/mailhosts.gen +++ b/gen/mailhosts.gen @@ -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; + } } } -- 2.45.1