Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Send abort if realm doesn't exist
Browse files Browse the repository at this point in the history
muzzammilshahid committed Jan 17, 2025
1 parent 52d5c43 commit 4fb8456
Showing 3 changed files with 19 additions and 3 deletions.
15 changes: 14 additions & 1 deletion acceptor.go
Original file line number Diff line number Diff line change
@@ -69,7 +69,7 @@ func (w *WebSocketAcceptor) Spec(subProtocol string) (serializers.Serializer, er
return serializer, nil
}

func (w *WebSocketAcceptor) Accept(conn net.Conn, config *WebSocketServerConfig) (BaseSession, error) {
func (w *WebSocketAcceptor) Accept(conn net.Conn, router *Router, config *WebSocketServerConfig) (BaseSession, error) {
if config == nil {
config = DefaultWebSocketServerConfig()
}
@@ -90,6 +90,19 @@ func (w *WebSocketAcceptor) Accept(conn net.Conn, config *WebSocketServerConfig)
return nil, fmt.Errorf("")
}

if !router.HasRealm(hello.Realm()) {
abortMessage := messages.NewAbort(map[string]any{}, wampproto.ErrNoSuchRealm, nil, nil)
serializedAbort, err := serializer.Serialize(abortMessage)
if err != nil {
return nil, fmt.Errorf("failed to serialize abort: %w", err)
}
if err = peer.Write(serializedAbort); err != nil {
return nil, fmt.Errorf("failed to send abort: %w", err)
}

return nil, fmt.Errorf(wampproto.ErrNoSuchRealm)
}

return Accept(peer, hello, serializer, w.Authenticator)
}

5 changes: 4 additions & 1 deletion acceptor_test.go
Original file line number Diff line number Diff line change
@@ -24,8 +24,11 @@ func TestAccept(t *testing.T) {
require.NoError(t, err)
require.NotNil(t, conn)

rout := xconn.NewRouter()
rout.AddRealm("realm1")

acceptor := xconn.WebSocketAcceptor{}
session, err := acceptor.Accept(conn, nil)
session, err := acceptor.Accept(conn, rout, nil)
require.NoError(t, err)
require.NotNil(t, session)

2 changes: 1 addition & 1 deletion server.go
Original file line number Diff line number Diff line change
@@ -64,7 +64,7 @@ func (s *Server) HandleClient(conn net.Conn) {
config := DefaultWebSocketServerConfig()
config.KeepAliveInterval = s.keepAliveInterval
config.KeepAliveTimeout = s.keepAliveTimeout
base, err := s.acceptor.Accept(conn, config)
base, err := s.acceptor.Accept(conn, s.router, config)
if err != nil {
return
}

0 comments on commit 4fb8456

Please sign in to comment.