#! /bin/sh /usr/share/dpatch/dpatch-run
## 91krb5_errors_afs_support.dpatch by  <njriley@thecheat.acm.uiuc.edu>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: No description.

@DPATCH@
diff -urNad screen-4.0.3~/kerberos.c screen-4.0.3/kerberos.c
--- screen-4.0.3~/kerberos.c	2008-10-31 22:24:55.102690021 -0500
+++ screen-4.0.3/kerberos.c	2008-10-31 22:24:55.102690021 -0500
@@ -52,6 +52,7 @@
   krb5_cc_cursor cur;
   time_t now;
   int renew;
+  char *name = NULL;
   
   SetTimeout(&renewev, 60000);
   evenq(&renewev);
@@ -77,6 +78,20 @@
 	{
 	  if(!creds.times.starttime)
 	    creds.times.starttime = creds.times.authtime;
+	  if((ret = krb5_unparse_name(context, myprinc, &name)) != 0)
+	    {
+	      Msg(0, "Could not get name for principal: %s", error_message(ret));
+	      krb5_free_principal(context, myprinc);
+	      krb5_free_cred_contents(context, &creds);
+	      return;
+	    }
+	  if(creds.times.endtime < now)
+	    {
+	      Msg(0, "Could not renew %s because it has expired.", name);
+	      krb5_free_principal(context, myprinc);
+	      krb5_free_cred_contents(context, &creds);
+	      return;
+	    }
 	  if(now > (creds.times.starttime + (((creds.times.endtime - creds.times.starttime) * 9) / 10)))
 	    renew = 1;
 	  break;
@@ -114,7 +129,12 @@
 
   krb5_free_principal(context, myprinc);
   krb5_free_cred_contents(context, &creds);
-  Msg(0, "Renewed Kerberos credentials successfully.");
+
+  ret = system("/usr/bin/aklog");
+  if(ret == 0)
+    Msg(0, "Renewed Kerberos and AFS credentials successfully.");
+  else
+    Msg(0, "Renewed Kerberos credentials successfully.");
 }
 
 int
