diff --git a/session/memcache/sess_memcache.go b/session/memcache/sess_memcache.go index 24aecb8276..bb33075ac7 100644 --- a/session/memcache/sess_memcache.go +++ b/session/memcache/sess_memcache.go @@ -129,8 +129,9 @@ func (rp *MemProvider) SessionRead(sid string) (session.SessionStore, error) { } } item, err := client.Get(sid) - if err != nil { - return nil, err + if err != nil && err == memcache.ErrCacheMiss { + rs := &MemcacheSessionStore{sid: sid, values: make(map[interface{}]interface{}), maxlifetime: rp.maxlifetime} + return rs, nil } var kv map[interface{}]interface{} if len(item.Value) == 0 { @@ -141,7 +142,6 @@ func (rp *MemProvider) SessionRead(sid string) (session.SessionStore, error) { return nil, err } } - rs := &MemcacheSessionStore{sid: sid, values: kv, maxlifetime: rp.maxlifetime} return rs, nil } diff --git a/session/session.go b/session/session.go index ffc08edcf8..f0895de11f 100644 --- a/session/session.go +++ b/session/session.go @@ -143,12 +143,14 @@ func (manager *Manager) SessionStart(w http.ResponseWriter, r *http.Request) (se return nil, errs } session, err = manager.provider.SessionRead(sid) - cookie = &http.Cookie{Name: manager.config.CookieName, + cookie = &http.Cookie{ + Name: manager.config.CookieName, Value: url.QueryEscape(sid), Path: "/", HttpOnly: true, Secure: manager.isSecure(r), - Domain: manager.config.Domain} + Domain: manager.config.Domain, + } if manager.config.CookieLifeTime > 0 { cookie.MaxAge = manager.config.CookieLifeTime cookie.Expires = time.Now().Add(time.Duration(manager.config.CookieLifeTime) * time.Second) @@ -170,12 +172,14 @@ func (manager *Manager) SessionStart(w http.ResponseWriter, r *http.Request) (se return nil, err } session, err = manager.provider.SessionRead(sid) - cookie = &http.Cookie{Name: manager.config.CookieName, + cookie = &http.Cookie{ + Name: manager.config.CookieName, Value: url.QueryEscape(sid), Path: "/", HttpOnly: true, Secure: manager.isSecure(r), - Domain: manager.config.Domain} + Domain: manager.config.Domain, + } if manager.config.CookieLifeTime > 0 { cookie.MaxAge = manager.config.CookieLifeTime cookie.Expires = time.Now().Add(time.Duration(manager.config.CookieLifeTime) * time.Second)