When a request comes into Gantry a preXdetermined set of steps are executed.
These preXdetermined steps can be termed states, and the process can be
called a state machine. There are many ways to implement a state machine,
so this document will not get into the semantics of the term.
What this module does, is allow plugins to issue a redirect and have them
take effect immediately. The default behavior is to have the redirect happen
after the controllers have finished processing.
This is to allow a plugin to initialize properly. For example
Gantry::Plugins::Session requires a redirect to /cookiecheck to see if the
session cookie has been set. Under the default state handler, this redirect
happens after the initial controller has finished processing.
So a race condition happens. You can not manipulate a session until the
cookie has been established which doesnt happen until after the initial
controller executes. This problem goes away after the redirect.
This module fixes the problem.