6cc7bd1
Index: src/krb5-auth-dialog.c
6cc7bd1
===================================================================
6cc7bd1
RCS file: /cvs/gnome/krb5-auth-dialog/src/krb5-auth-dialog.c,v
6cc7bd1
retrieving revision 1.27
6cc7bd1
diff -u -d -p -U10 -r1.27 krb5-auth-dialog.c
6cc7bd1
--- src/krb5-auth-dialog.c	18 Mar 2006 00:21:08 -0000	1.27
6cc7bd1
+++ src/krb5-auth-dialog.c	24 Jul 2006 14:52:49 -0000
6cc7bd1
@@ -277,20 +277,21 @@ auth_dialog_prompter (krb5_context ctx,
6cc7bd1
 				password = gtk_entry_get_text (GTK_ENTRY (entry));
6cc7bd1
 				password_len = strlen (password);
6cc7bd1
 				errcode = 0;
6cc7bd1
 				break;
6cc7bd1
 			case GTK_RESPONSE_CANCEL:
6cc7bd1
 				canceled = TRUE;
6cc7bd1
 				break;
6cc7bd1
 			case GTK_RESPONSE_DELETE_EVENT:
6cc7bd1
 				break;
6cc7bd1
 			default:
6cc7bd1
+				g_warning ("Unknown Response: %d", response);
6cc7bd1
 				g_assert_not_reached ();
6cc7bd1
 		}
6cc7bd1
 
6cc7bd1
 		g_source_remove (source_id);
6cc7bd1
 
6cc7bd1
 		prompts[i].reply->data = (char *) password;
6cc7bd1
 		prompts[i].reply->length = password_len;
6cc7bd1
 	}
6cc7bd1
 
6cc7bd1
 	/* Reset this, so we know the next time we get a TRUE value, it is accurate. */
6cc7bd1
@@ -368,21 +369,25 @@ credentials_expiring (gpointer *data)
6cc7bd1
 	gboolean give_up;
6cc7bd1
 	gboolean renewable;
6cc7bd1
 
6cc7bd1
 	if (credentials_expiring_real (&renewable) && is_online) {
6cc7bd1
 		give_up = canceled && (creds_expiry == canceled_creds_expiry);
6cc7bd1
 		if (!give_up) {
6cc7bd1
 			do {
6cc7bd1
 				retval = grab_credentials (renewable);
6cc7bd1
 				give_up = canceled &&
6cc7bd1
 					  (creds_expiry == canceled_creds_expiry);
6cc7bd1
-			} while ((retval != 0) && !give_up);
6cc7bd1
+			} while ((retval != 0) && 
6cc7bd1
+			         (retval != KRB5_REALM_CANT_RESOLVE) &&
6cc7bd1
+			         (retval != KRB5_KDC_UNREACH) &&
6cc7bd1
+				 invalid_password &&
6cc7bd1
+			         !give_up);
6cc7bd1
 		}
6cc7bd1
 	}
6cc7bd1
 
6cc7bd1
 	return TRUE;
6cc7bd1
 }
6cc7bd1
 
6cc7bd1
 static void
6cc7bd1
 set_options_using_creds(krb5_context context,
6cc7bd1
 			krb5_creds *creds,
6cc7bd1
 			krb5_get_init_creds_opt *opts)