Index: includes/common.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/common.inc,v retrieving revision 1.537.2.24 diff -u -r1.537.2.24 common.inc --- includes/common.inc 26 Jul 2007 19:17:24 -0000 1.537.2.24 +++ includes/common.inc 27 Sep 2007 05:26:15 -0000 @@ -264,11 +264,13 @@ // Before the redirect, allow modules to react to the end of the page request. module_invoke_all('exit', $url); - header('Location: '. $url); + // Here we register header() to be called after exit(). Because + // session_write_close() was registered before header() all session + // data will be written to the database before the header is sent to the + // browser. + register_shutdown_function('header', "Location: $url", TRUE, $http_response_code); - // The "Location" header sends a REDIRECT status code to the http - // daemon. In some cases this can go wrong, so we make sure none - // of the code below the drupal_goto() call gets executed when we redirect. + // Make sure none of the code below the drupal_goto() call gets executed. exit(); }