diff -uNr postgresql-7.4.5/src/interfaces/libpq/fe-auth.c postgresql-7.4.5-mod/src/interfaces/libpq/fe-auth.c
--- postgresql-7.4.5/src/interfaces/libpq/fe-auth.c	2003-12-20 19:46:02.000000000 +0100
+++ postgresql-7.4.5-mod/src/interfaces/libpq/fe-auth.c	2004-09-25 12:22:26.000000000 +0200
@@ -116,6 +116,7 @@
 
 /* for some reason, this is not defined in krb.h ... */
 extern char *tkt_string(void);
+static char *pg_krb_srvnam;
 
 /*
  * pg_krb4_init -- initialization performed before any Kerberos calls are made
@@ -145,6 +146,11 @@
 		(void) snprintf(tktbuf, sizeof(tktbuf), "%s@%s", tkt_string(), realm);
 		krb_set_tkt_string(tktbuf);
 	}
+
+	pg_krb_srvnam = getenv("PGKRBSRVNAM");
+	if (pg_krb_srvnam == NULL) {
+	     pg_krb_srvnam = PG_KRB_SRVNAM;
+	}
 }
 
 /*
@@ -216,7 +222,7 @@
 	status = krb_sendauth(krbopts,
 						  sock,
 						  &clttkt,
-						  PG_KRB_SRVNAM,
+						  pg_krb_srvnam,
 						  hostname,
 						  realm,
 						  (u_long) 0,
@@ -278,6 +284,7 @@
 static krb5_ccache pg_krb5_ccache;
 static krb5_principal pg_krb5_client;
 static char *pg_krb5_name;
+static char *pg_krb_srvnam;
 
 
 static int
@@ -333,6 +340,11 @@
 
 	pg_krb5_name = pg_an_to_ln(pg_krb5_name);
 
+	pg_krb_srvnam = getenv("PGKRBSRVNAM");
+	if (pg_krb_srvnam == NULL) {
+	     pg_krb_srvnam = PG_KRB_SRVNAM;
+	}
+	
 	pg_krb5_initialised = 1;
 	return STATUS_OK;
 }
@@ -370,7 +382,7 @@
 	if (ret != STATUS_OK)
 		return ret;
 
-	retval = krb5_sname_to_principal(pg_krb5_context, hostname, PG_KRB_SRVNAM,
+	retval = krb5_sname_to_principal(pg_krb5_context, hostname, pg_krb_srvnam,
 									 KRB5_NT_SRV_HST, &server);
 	if (retval)
 	{
@@ -397,7 +409,7 @@
 	}
 
 	retval = krb5_sendauth(pg_krb5_context, &auth_context,
-						   (krb5_pointer) & sock, PG_KRB_SRVNAM,
+						   (krb5_pointer) & sock, pg_krb_srvnam,
 						   pg_krb5_client, server,
 						   AP_OPTS_MUTUAL_REQUIRED,
 						   NULL, 0,		/* no creds, use ccache instead */
