Skip to content

Commit 1205f67

Browse files
authored
Merge pull request #637 from SNORRIS721/duplicatesession
Unregistering sessions on stop
2 parents c187bdb + cf3fb98 commit 1205f67

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

acceptor.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,13 @@ func (a *Acceptor) Stop() {
144144
session.stop()
145145
}
146146
a.sessionGroup.Wait()
147+
148+
for sessionID := range a.sessions {
149+
err := UnregisterSession(sessionID)
150+
if err != nil {
151+
return
152+
}
153+
}
147154
}
148155

149156
// RemoteAddr gets remote IP address for a given session.

initiator.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,15 @@ func (i *Initiator) Stop() {
7373
default:
7474
}
7575
close(i.stopChan)
76+
7677
i.wg.Wait()
78+
79+
for sessionID := range i.sessionSettings {
80+
err := UnregisterSession(sessionID)
81+
if err != nil {
82+
return
83+
}
84+
}
7785
}
7886

7987
// NewInitiator creates and initializes a new Initiator.

session_factory_test.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -472,6 +472,23 @@ func (s *SessionFactorySuite) TestNewSessionBuildInitiators() {
472472
s.Equal("127.0.0.1:5000", session.SocketConnectAddress[0])
473473
}
474474

475+
func (s *SessionFactorySuite) TestDuplicateSession() {
476+
s.sessionFactory.BuildInitiators = true
477+
s.SessionSettings.Set(config.HeartBtInt, "34")
478+
s.SessionSettings.Set(config.SocketConnectHost, "127.0.0.1")
479+
s.SessionSettings.Set(config.SocketConnectPort, "5000")
480+
481+
session, err := s.createSession(s.SessionID, s.MessageStoreFactory, s.SessionSettings, s.LogFactory, s.App)
482+
s.Nil(err)
483+
s.True(session.InitiateLogon)
484+
_, err = s.createSession(s.SessionID, s.MessageStoreFactory, s.SessionSettings, s.LogFactory, s.App)
485+
s.NotNil(err)
486+
s.Equal("Duplicate SessionID", err.Error())
487+
UnregisterSession(s.SessionID)
488+
_, err = s.createSession(s.SessionID, s.MessageStoreFactory, s.SessionSettings, s.LogFactory, s.App)
489+
s.Nil(err)
490+
}
491+
475492
func (s *SessionFactorySuite) TestNewSessionBuildAcceptors() {
476493
s.sessionFactory.BuildInitiators = false
477494
s.SessionSettings.Set(config.HeartBtInt, "34")

0 commit comments

Comments
 (0)