 session_api.module            | 18 ++++++------------
 tests/session_api_test.module |  6 ++++--
 2 files changed, 10 insertions(+), 14 deletions(-)

diff --git a/session_api.module b/session_api.module
index e67f183..67fe800 100644
--- a/session_api.module
+++ b/session_api.module
@@ -13,14 +13,13 @@ function session_api_available() {
 }
 
 /**
- * Create an empty string cookie.
- *
- * This is useful for fooling the session_api_available() function when using
- * Pressflow, which does not set a cookie for anonymous users.
+ * Implements hook_init().
  */
-function session_api_start_session() {
-  $_SESSION['session_api_session'] = '';
-  drupal_session_start();
+function session_api_init() {
+  // Set a cookie via JavaScript to check if anonymous users support cookies.
+  if (user_is_anonymous()) {
+    drupal_add_js("document.cookie = 'session_api_available=1; path=/';", array('type' => 'inline'));
+  }
 }
 
 /**
@@ -41,11 +40,6 @@ function session_api_start_session() {
 function session_api_get_sid($create = TRUE) {
   static $sid;
 
-  if ($create) {
-    // Must initialize sessions for anonymous users.
-    session_api_start_session();
-  }
-
   if (!session_api_available()) {
     return FALSE;
   }
diff --git a/tests/session_api_test.module b/tests/session_api_test.module
index 1163d12..bbfca24 100644
--- a/tests/session_api_test.module
+++ b/tests/session_api_test.module
@@ -1,6 +1,5 @@
 <?php
 
-
 /**
  * @file
  * Helper module for Session API tests.
@@ -24,6 +23,9 @@ function session_api_test_menu() {
  * Implementation of hook_init().
  */
 function session_api_test_init() {
+  // Make sure Session API thinks the client supports cookies.
+  $_COOKIE = array('session_api_test' => 'test');
+
   $sid = session_api_get_sid();
   header('X-Session-Api-Sid: ' . $sid);
 
@@ -36,4 +38,4 @@ function session_api_test_init() {
  */
 function session_api_test_page() {
   return t('Session API Test module enabled.');
-}
\ No newline at end of file
+}
