Skip to content

Commit 1c20e41

Browse files
authored
Merge pull request #490 from mattrasband/support-dynamic-sessions-in-stores
Allow stores to fall back to global settings for dynamic sessions
2 parents cf9b4c0 + 0dd076e commit 1c20e41

File tree

3 files changed

+26
-3
lines changed

3 files changed

+26
-3
lines changed

filestore.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,18 @@ func NewFileStoreFactory(settings *Settings) MessageStoreFactory {
6161

6262
// Create creates a new FileStore implementation of the MessageStore interface.
6363
func (f fileStoreFactory) Create(sessionID SessionID) (msgStore MessageStore, err error) {
64+
globalSettings := f.settings.GlobalSettings()
65+
dynamicSessions, _ := globalSettings.BoolSetting(config.DynamicSessions)
66+
6467
sessionSettings, ok := f.settings.SessionSettings()[sessionID]
6568
if !ok {
66-
return nil, fmt.Errorf("unknown session: %v", sessionID)
69+
if dynamicSessions {
70+
sessionSettings = globalSettings
71+
} else {
72+
return nil, fmt.Errorf("unknown session: %v", sessionID)
73+
}
6774
}
75+
6876
dirname, err := sessionSettings.Setting(config.FileStorePath)
6977
if err != nil {
7078
return nil, err

mongostore.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,16 @@ func NewMongoStoreFactoryPrefixed(settings *Settings, collectionsPrefix string)
6161

6262
// Create creates a new MongoStore implementation of the MessageStore interface.
6363
func (f mongoStoreFactory) Create(sessionID SessionID) (msgStore MessageStore, err error) {
64+
globalSettings := f.settings.GlobalSettings()
65+
dynamicSessions, _ := globalSettings.BoolSetting(config.DynamicSessions)
66+
6467
sessionSettings, ok := f.settings.SessionSettings()[sessionID]
6568
if !ok {
66-
return nil, fmt.Errorf("unknown session: %v", sessionID)
69+
if dynamicSessions {
70+
sessionSettings = globalSettings
71+
} else {
72+
return nil, fmt.Errorf("unknown session: %v", sessionID)
73+
}
6774
}
6875
mongoConnectionURL, err := sessionSettings.Setting(config.MongoStoreConnection)
6976
if err != nil {

sqlstore.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,18 @@ func NewSQLStoreFactory(settings *Settings) MessageStoreFactory {
6767

6868
// Create creates a new SQLStore implementation of the MessageStore interface.
6969
func (f sqlStoreFactory) Create(sessionID SessionID) (msgStore MessageStore, err error) {
70+
globalSettings := f.settings.GlobalSettings()
71+
dynamicSessions, _ := globalSettings.BoolSetting(config.DynamicSessions)
72+
7073
sessionSettings, ok := f.settings.SessionSettings()[sessionID]
7174
if !ok {
72-
return nil, fmt.Errorf("unknown session: %v", sessionID)
75+
if dynamicSessions {
76+
sessionSettings = globalSettings
77+
} else {
78+
return nil, fmt.Errorf("unknown session: %v", sessionID)
79+
}
7380
}
81+
7482
sqlDriver, err := sessionSettings.Setting(config.SQLStoreDriver)
7583
if err != nil {
7684
return nil, err

0 commit comments

Comments
 (0)