diff --git a/Script/CastorScript.py b/Script/CastorScript.py
index 9f0b9305ba5f8dcedfc3cbea46fe32ee59d37843..25dffebce01df0fe34bf269df9607f860741df29 100755
--- a/Script/CastorScript.py
+++ b/Script/CastorScript.py
@@ -187,6 +187,17 @@ def main(conf):
     lastdbconn = time();
     DBTimeout = conf.DBTimeout
     DBReconnectTimeout = conf.DBReconnectTimeout
+
+    
+    ##### Setup Kerberos if needed #####
+    if conf.keytab:
+        
+        krb_setcache(conf.krbcache,logger)
+        krb_exp = krb_updatetoken(conf.keytab, conf.krbuser, logger)
+        if not krb_exp:
+            logger.error('Could not initialize kerberos ticket. Giving up!')
+            return 
+
         
     ##### Start the threads #####
     manager.start()
@@ -195,12 +206,6 @@ def main(conf):
     if conf.ERSenabled:
         check.start()
     logger.info('Manager,Copy, Delete and Check Threads started')
-
-    ##### Setup Kerberos if needed #####
-    if conf.keytab:
-        
-        krb_setcache(conf.krbcache,logger)
-        krb_exp = krb_updatetoken(conf.keytab, conf.krbuser, logger)
     
     ##### Every DBTimeout check if connection to Oracle database is still good #####
     while not exitFlag:
@@ -245,8 +250,12 @@ def main(conf):
         # Update KRB token, if needed:
         if conf.keytab:
             now = datetime.datetime.now()
-            if now >= krb_exp or (krb_exp-now).seconds < 3600:
+            if not krb_exp:
+                 #Previous update failed, we try again
+                krb_exp = krb_updatetoken(conf.keytab, conf.krbuser, logger)
+            elif now >= krb_exp or (krb_exp-now).seconds < 3600:
                 krb_exp = krb_updatetoken(conf.keytab, conf.krbuser, logger)
+               
                             
         #Check worker states
         if not (manager.isAlive() and copy.isAlive() and delete.isAlive()):