Skip to content

Commit d21987a

Browse files
pavelanniPavel Anni
andauthored
Fix HTTP transport message handling (#76)
Co-authored-by: Pavel Anni <[email protected]>
1 parent e00d4be commit d21987a

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

transport/http/http.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ type HTTPTransport struct {
2020
closeHandler func()
2121
mu sync.RWMutex
2222
addr string
23-
responseMap map[int64]chan *transport.BaseJsonRpcMessage
2423
}
2524

2625
// NewHTTPTransport creates a new HTTP transport that listens on the specified endpoint
@@ -29,7 +28,6 @@ func NewHTTPTransport(endpoint string) *HTTPTransport {
2928
baseTransport: newBaseTransport(),
3029
endpoint: endpoint,
3130
addr: ":8080", // Default port
32-
responseMap: make(map[int64]chan *transport.BaseJsonRpcMessage),
3331
}
3432
}
3533

@@ -55,14 +53,27 @@ func (t *HTTPTransport) Start(ctx context.Context) error {
5553
// Send implements Transport.Send
5654
func (t *HTTPTransport) Send(ctx context.Context, message *transport.BaseJsonRpcMessage) error {
5755
key := message.JsonRpcResponse.Id
58-
responseChannel := t.responseMap[int64(key)]
56+
fmt.Printf("[Send] Attempting to send response with key: %d\n", key)
57+
58+
responseChannel := t.baseTransport.responseMap[int64(key)]
5959
if responseChannel == nil {
60+
fmt.Printf("[Send] Response map keys: %v\n", t.getResponseMapKeys())
61+
6062
return fmt.Errorf("no response channel found for key: %d", key)
6163
}
6264
responseChannel <- message
6365
return nil
6466
}
6567

68+
// Helper method to get keys
69+
func (t *HTTPTransport) getResponseMapKeys() []int64 {
70+
keys := make([]int64, 0, len(t.baseTransport.responseMap))
71+
for k := range t.baseTransport.responseMap {
72+
keys = append(keys, k)
73+
}
74+
return keys
75+
}
76+
6677
// Close implements Transport.Close
6778
func (t *HTTPTransport) Close() error {
6879
if t.server != nil {
@@ -94,6 +105,7 @@ func (t *HTTPTransport) SetErrorHandler(handler func(error)) {
94105
func (t *HTTPTransport) SetMessageHandler(handler func(ctx context.Context, message *transport.BaseJsonRpcMessage)) {
95106
t.mu.Lock()
96107
defer t.mu.Unlock()
108+
t.baseTransport.messageHandler = handler
97109
t.messageHandler = handler
98110
}
99111

0 commit comments

Comments
 (0)