* cgi hooks are now run before ikiwiki state is loaded.
authorJoey Hess <joey@kodama.kitenet.net>
Sun, 3 Feb 2008 05:23:04 +0000 (00:23 -0500)
committerJoey Hess <joey@kodama.kitenet.net>
Sun, 3 Feb 2008 05:23:04 +0000 (00:23 -0500)
* This allows locking the wiki before loading state, which avoids some
  tricky locking code when saving a web edit.

IkiWiki/CGI.pm
debian/changelog
doc/plugins/write.mdwn
ikiwiki.in

index c8c1b63dd5c63d37b4e1854ed58a673920f296f5..3f588e427146e3792f19a37ce44cf4b929847aa3 100644 (file)
@@ -539,10 +539,6 @@ sub cgi_editpage ($$) { #{{{
                # may have been committed while the post-commit hook was
                # disabled.
                require IkiWiki::Render;
-               # Reload index, since the first time it's loaded is before
-               # the wiki is locked, and things may have changed in the
-               # meantime.
-               loadindex();
                refresh();
                saveindex();
 
@@ -616,6 +612,7 @@ sub cgi (;$$) { #{{{
        
        # Need to lock the wiki before getting a session.
        lockwiki();
+       loadindex();
        
        if (! $session) {
                $session=cgi_getsession($q);
index df7b8b42498d4b7e5eb5ae154365fece8550cc92..ceaf3cf7136b03bcc3302ed0c57f1594fbc22c42 100644 (file)
@@ -8,6 +8,9 @@ ikiwiki (2.31) UNRELEASED; urgency=low
     too complex to do.
   * aggregate: Forking a child broke the one state that mattered: Forcing
     the aggregating page to be rebuilt. Fix this.
+  * cgi hooks are now run before ikiwiki state is loaded.
+  * This allows locking the wiki before loading state, which avoids some
+    tricky locking code when saving a web edit.
 
  -- Joey Hess <joeyh@debian.org>  Sat, 02 Feb 2008 23:36:31 -0500
 
index 9c3a36b8fb516a72e0b3dbc01ad343348bd4173f..216cfa51c95a5dba9d1fbb49d0b5296afe8d821c 100644 (file)
@@ -222,8 +222,11 @@ source files that were rendered.
 
 Use this to hook into ikiwiki's cgi script. Each registered cgi hook is
 called in turn, and passed a CGI object. The hook should examine the
-parameters, and if it will handle this CGI request, output a page (including the http headers) and
-terminate the program.
+parameters, and if it will handle this CGI request, output a page
+(including the http headers) and terminate the program.
+
+Note that cgi hooks are called as early as possible, before any ikiwiki
+state is loaded, and with no session information.
 
 ### auth
 
index 9d1f6b52077b06e09f5bf7ec97b363c0c17941fb..1ce7e16887d3389620349ff357ca165a87deabca 100755 (executable)
@@ -121,7 +121,6 @@ sub main () { #{{{
                gen_wrapper();
        }
        elsif ($config{cgi}) {
-               loadindex();
                require IkiWiki::CGI;
                cgi();
        }