def __call__(self, environ, start_response):
        # just make sure it exists and throw it in the environ
        session = Session(environ)
        if session.session_key is None:
            session.create()
        environ[self.settings.SESSION_WSGI_ENVIRON_NAME] = session

        def session_start_response(status, headers, exc_info=None):
            session = Session(environ)
            if session.modified:
                if session.get_expire_at_browser_close():
                    max_age = None
                    expires = None
                else:
                    max_age = session.get_expiry_age()
                    expires_time = time.time() + max_age
                    expires = cookie_date(expires_time)
                cookie = me_want_cookie('sessionid',
                            value=session.session_key,
                            max_age=max_age,
                            expires=expires,
                            path=self.settings.SESSION_COOKIE_PATH,
                            domain=self.settings.SESSION_COOKIE_DOMAIN,
                            secure=self.settings.SESSION_COOKIE_SECURE,
                            httponly=self.settings.SESSION_COOKIE_HTTPONLY)
                headers.append(("Set-Cookie", cookie.output(header='')))
            return start_response(status, headers, exc_info)

        return self.app(environ, session_start_response)
 def session_start_response(status, headers, exc_info=None):
     session = Session(environ)
     if session.modified:
         if session.get_expire_at_browser_close():
             max_age = None
             expires = None
         else:
             max_age = session.get_expiry_age()
             expires_time = time.time() + max_age
             expires = cookie_date(expires_time)
         cookie = me_want_cookie('sessionid',
                     value=session.session_key,
                     max_age=max_age,
                     expires=expires,
                     path=self.settings.SESSION_COOKIE_PATH,
                     domain=self.settings.SESSION_COOKIE_DOMAIN,
                     secure=self.settings.SESSION_COOKIE_SECURE,
                     httponly=self.settings.SESSION_COOKIE_HTTPONLY)
         headers.append(("Set-Cookie", cookie.output(header='')))
     return start_response(status, headers, exc_info)