diff --git a/session/session.go b/session/session.go
index eb4cdbe1adbd5a434cec0723e90d41d7bc25b3fc..2ea3f92bf0cc830a4b97d63e624b18d98d4a4773 100644
--- a/session/session.go
+++ b/session/session.go
@@ -56,8 +56,6 @@ func NewSession(logger *logrus.Entry) (*Session, error) {
 		log: logger,
 	}
 
-	sess.setMux()
-
 	return sess, nil
 }
 
@@ -84,14 +82,6 @@ func generateToken() (string, error) {
 	return token, nil
 }
 
-func (s *Session) setMux() {
-	s.Lock()
-	defer s.Unlock()
-
-	s.mux = http.NewServeMux()
-	s.mux.HandleFunc(s.Endpoint+"/exec", s.execHandler)
-}
-
 func (s *Session) execHandler(w http.ResponseWriter, r *http.Request) {
 	logger := s.log.WithField("uri", r.RequestURI)
 	logger.Debug("Exec terminal session request")
@@ -174,10 +164,17 @@ func (s *Session) closeTerminalConn(conn terminal.Conn) {
 func (s *Session) SetInteractiveTerminal(interactiveTerminal terminal.InteractiveTerminal) {
 	s.Lock()
 	defer s.Unlock()
+
 	s.interactiveTerminal = interactiveTerminal
+
+	s.mux = http.NewServeMux()
+	s.mux.HandleFunc(s.Endpoint+"/exec", s.execHandler)
 }
 
 func (s *Session) Mux() *http.ServeMux {
+	s.Lock()
+	defer s.Unlock()
+
 	return s.mux
 }