Skip to content

Commit ef8eb6e

Browse files
authoredApr 1, 2025··
Merge pull request #4 from sks/feature/default_optional_val
[streamable][chore] do not override default in case of empty
2 parents a0997a4 + 39118b3 commit ef8eb6e

File tree

2 files changed

+16
-9
lines changed

2 files changed

+16
-9
lines changed
 

‎pkg/streamable_http/options.go

+9-3
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,13 @@ type Endpoint struct {
2323
}
2424

2525
func (o Endpoint) apply(t *streamableHttpTransport) {
26-
t.port = o.Port
27-
t.hostname = o.Hostname
28-
t.path = o.Path
26+
if o.Port != 0 {
27+
t.port = o.Port
28+
}
29+
if o.Hostname != "" {
30+
t.hostname = o.Hostname
31+
}
32+
if o.Path != "" {
33+
t.path = o.Path
34+
}
2935
}

‎pkg/streamable_http/streamable_http_transport.go

+7-6
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"encoding/json"
66
"fmt"
77
"io"
8+
"sync"
89
"time"
910

1011
"github.com/google/uuid"
@@ -38,7 +39,7 @@ func (t *streamableHttpTransport) Run(
3839
e := echo.New()
3940
t.e = e
4041

41-
servers := map[uuid.UUID]server.Server{}
42+
servers := sync.Map{}
4243

4344
// ensure that negotiated version would be at least the one with streamable http transport
4445
serverOptions = append(serverOptions, server.MinimalProtocolVersionOption{
@@ -54,11 +55,11 @@ func (t *streamableHttpTransport) Run(
5455
if err != nil {
5556
return echo.NewHTTPError(400, "Wrong session id format, expected UUID")
5657
}
57-
_, ok := servers[sessionId]
58+
_, ok := servers.Load(sessionId)
5859
if !ok {
5960
return echo.NewHTTPError(404, "Requested session id not found in session store")
6061
}
61-
delete(servers, sessionId)
62+
servers.Delete(sessionId)
6263
t.sessionManager.DeleteSession(sessionId)
6364
return c.NoContent(204)
6465
})
@@ -74,17 +75,17 @@ func (t *streamableHttpTransport) Run(
7475
// , hence we return 404 Not Found with some details in the body
7576
return echo.NewHTTPError(404, "Wrong session id format, expected UUID")
7677
}
77-
s, ok := servers[sessionId]
78+
s, ok := servers.Load(sessionId)
7879
if !ok {
7980
return echo.NewHTTPError(404, "Requested session id not found in session store")
8081
}
8182
w.Header().Set("Mcp-Session-Id", sessionId.String())
82-
serv = s
83+
serv = s.(server.Server)
8384
sessionIdUsed = sessionId
8485
} else {
8586
sessionId := uuid.New()
8687
s := server.NewServer(capabilities, serverInfo, serverOptions...)
87-
servers[sessionId] = s
88+
servers.Store(sessionId, s)
8889
w.Header().Set("Mcp-Session-Id", sessionId.String())
8990
serv = s
9091
sessionIdUsed = sessionId

0 commit comments

Comments
 (0)
Please sign in to comment.