| 138 | } |
| 139 | |
| 140 | func NewPersistentClientSessionCache(path string, logger *clog.CondLogger) (*PersistentClientSessionCache, error) { |
| 141 | dir := filepath.Dir(path) |
| 142 | if err := os.MkdirAll(dir, 0700); err != nil { |
| 143 | return nil, err |
| 144 | } |
| 145 | db, err := bbolt.Open(path, 0600, &bbolt.Options{ |
| 146 | Timeout: 5 * time.Second, |
| 147 | Logger: bboltLogger{logger}, |
| 148 | }) |
| 149 | if err != nil { |
| 150 | return nil, err |
| 151 | } |
| 152 | return &PersistentClientSessionCache{ |
| 153 | db: db, |
| 154 | logger: logger, |
| 155 | }, nil |
| 156 | } |
| 157 | |
| 158 | func (cache *PersistentClientSessionCache) Get(sessionKey string) (*tls.ClientSessionState, bool) { |
| 159 | var data []byte |