diff -ruN postgresql-7.4.9-old/src/backend/libpq/auth.c postgresql-7.4.9/src/backend/libpq/auth.c
--- postgresql-7.4.9-old/src/backend/libpq/auth.c	2003-12-20 19:25:02.000000000 +0100
+++ postgresql-7.4.9/src/backend/libpq/auth.c	2005-10-06 22:14:05.000000000 +0200
@@ -216,8 +216,19 @@
 		return STATUS_ERROR;
 	}
 
-	retval = krb5_sname_to_principal(pg_krb5_context, NULL, PG_KRB_SRVNAM,
-									 KRB5_NT_SRV_HST, &pg_krb5_server);
+        if( VirtualHost && VirtualHost[0] )
+        {
+                char *host=VirtualHost;
+                while(*host==' ') host++; /* skip leading spaces (cf postmaster.c) */
+                retval = krb5_sname_to_principal(pg_krb5_context, host, PG_KRB_SRVNAM,
+                                                                         KRB5_NT_SRV_HST, &pg_krb5_server);
+        }
+        else
+        {
+                retval = krb5_sname_to_principal(pg_krb5_context, NULL, PG_KRB_SRVNAM,
+                                                                         KRB5_NT_SRV_HST, &pg_krb5_server);
+        }
+
 	if (retval)
 	{
 		ereport(LOG,
