diff --git a/filestore.go b/filestore.go index 2a548cadb..e0766fd08 100644 --- a/filestore.go +++ b/filestore.go @@ -61,10 +61,18 @@ func NewFileStoreFactory(settings *Settings) MessageStoreFactory { // Create creates a new FileStore implementation of the MessageStore interface. func (f fileStoreFactory) Create(sessionID SessionID) (msgStore MessageStore, err error) { + globalSettings := f.settings.GlobalSettings() + dynamicSessions, _ := globalSettings.BoolSetting(config.DynamicSessions) + sessionSettings, ok := f.settings.SessionSettings()[sessionID] if !ok { - return nil, fmt.Errorf("unknown session: %v", sessionID) + if dynamicSessions { + sessionSettings = globalSettings + } else { + return nil, fmt.Errorf("unknown session: %v", sessionID) + } } + dirname, err := sessionSettings.Setting(config.FileStorePath) if err != nil { return nil, err diff --git a/mongostore.go b/mongostore.go index c9bc37ac2..290cdc236 100644 --- a/mongostore.go +++ b/mongostore.go @@ -61,9 +61,16 @@ func NewMongoStoreFactoryPrefixed(settings *Settings, collectionsPrefix string) // Create creates a new MongoStore implementation of the MessageStore interface. func (f mongoStoreFactory) Create(sessionID SessionID) (msgStore MessageStore, err error) { + globalSettings := f.settings.GlobalSettings() + dynamicSessions, _ := globalSettings.BoolSetting(config.DynamicSessions) + sessionSettings, ok := f.settings.SessionSettings()[sessionID] if !ok { - return nil, fmt.Errorf("unknown session: %v", sessionID) + if dynamicSessions { + sessionSettings = globalSettings + } else { + return nil, fmt.Errorf("unknown session: %v", sessionID) + } } mongoConnectionURL, err := sessionSettings.Setting(config.MongoStoreConnection) if err != nil { diff --git a/sqlstore.go b/sqlstore.go index 6ff8ac225..5e492be2c 100644 --- a/sqlstore.go +++ b/sqlstore.go @@ -67,10 +67,18 @@ func NewSQLStoreFactory(settings *Settings) MessageStoreFactory { // Create creates a new SQLStore implementation of the MessageStore interface. func (f sqlStoreFactory) Create(sessionID SessionID) (msgStore MessageStore, err error) { + globalSettings := f.settings.GlobalSettings() + dynamicSessions, _ := globalSettings.BoolSetting(config.DynamicSessions) + sessionSettings, ok := f.settings.SessionSettings()[sessionID] if !ok { - return nil, fmt.Errorf("unknown session: %v", sessionID) + if dynamicSessions { + sessionSettings = globalSettings + } else { + return nil, fmt.Errorf("unknown session: %v", sessionID) + } } + sqlDriver, err := sessionSettings.Setting(config.SQLStoreDriver) if err != nil { return nil, err