src/hg/lib/wikiTrack.c 1.27

1.27 2010/02/10 21:41:36 hiram
do not error out just because the wiki WEB site has disappeared
Index: src/hg/lib/wikiTrack.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/lib/wikiTrack.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -b -B -U 4 -r1.26 -r1.27
--- src/hg/lib/wikiTrack.c	23 Jan 2009 22:39:53 -0000	1.26
+++ src/hg/lib/wikiTrack.c	10 Feb 2010 21:41:36 -0000	1.27
@@ -6,8 +6,9 @@
 #include "linefile.h"
 #include "dystring.h"
 #include "jksql.h"
 #include "wikiTrack.h"
+#include "errCatch.h"
 
 static char const rcsid[] = "$Id$";
 
 void wikiTrackStaticLoad(char **row, struct wikiTrack *ret)
@@ -328,8 +329,9 @@
 /*determine if wikiTrack can be used, and is this user logged into the wiki ?*/
 {
 static boolean done = FALSE;
 static boolean status = FALSE;
+static boolean wikiUp = FALSE;
 static char *userName = NULL;
 
 /* do not repeat this query */
 if (done)
@@ -377,10 +379,24 @@
     char *wikiUser = wikiLinkUserName();
     if ( (wikiUser) &&
 	(findCookieData(cfgOption(CFG_WIKI_SESSION_COOKIE)) != NULL) )
 	{
-	    struct htmlPage *page = fetchEditPage(TEST_EMAIL_VERIFIED);
-	    char *loginExpired = stringIn(LOGIN_EXPIRED, page->fullText);
+	    struct htmlPage *page = NULL;
+	    /* protect against temporarily offline wiki site */
+	    struct errCatch *errCatch = errCatchNew();
+	    if (errCatchStart(errCatch))
+		{
+		page = fetchEditPage(TEST_EMAIL_VERIFIED);
+		}
+	    errCatchEnd(errCatch);
+	    if (! errCatch->gotError)
+		{
+		wikiUp = TRUE;
+		}
+	    errCatchFree(&errCatch);
+	    char *loginExpired = NULL;
+	    if (page)
+		loginExpired = stringIn(LOGIN_EXPIRED, page->fullText);
 	    if (loginExpired == NULL)
 		userName = wikiUser;	/* save result for next time */
 	}
     /* see if table exists, create it if it is not yet there */
@@ -391,8 +407,9 @@
 	sqlUpdate(wikiConn, query);
 	freeMem(query);
 	}
     wikiDisconnect(&wikiConn);
+    if (wikiUp)
     status = TRUE; /* system is enabled */
     }
 if (wikiUserName)
     *wikiUserName = userName;  /* returning name indicates logged in */