gate send actions based on whether the peer is connected.

This commit is contained in:
Jay
2026-08-06 09:54:09 -04:00
parent 70c47d7421
commit 83c923ab11
+8 -1
View File
@@ -292,6 +292,7 @@ func (m *RequestManager) Cancel(id string) error {
} }
if req.active { if req.active {
if m.envoy.IsConnected() {
go func() { go func() {
err := m.envoy.Send(envelope.EncloseClose(id)) err := m.envoy.Send(envelope.EncloseClose(id))
if err != nil { if err != nil {
@@ -304,6 +305,7 @@ func (m *RequestManager) Cancel(id string) error {
m.logger.Debug("close sent", "req", req.id) m.logger.Debug("close sent", "req", req.id)
} }
}() }()
}
req.active = false req.active = false
} }
@@ -324,7 +326,7 @@ func (m *RequestManager) Close() {
defer m.mu.Unlock() defer m.mu.Unlock()
for id, req := range m.reqs { for id, req := range m.reqs {
if req.active { if m.envoy.IsConnected() && req.active {
go m.envoy.Send(envelope.EncloseClose(id)) go m.envoy.Send(envelope.EncloseClose(id))
} }
req.deregisterOnce.Do(func() { req.deregisterOnce.Do(func() {
@@ -336,6 +338,9 @@ func (m *RequestManager) Close() {
} }
func (m *RequestManager) activate(req *request) { func (m *RequestManager) activate(req *request) {
if !m.envoy.IsConnected() {
return
}
req.active = true req.active = true
go func() { go func() {
err := m.envoy.Send(envelope.EncloseReq(req.id, req.filters)) err := m.envoy.Send(envelope.EncloseReq(req.id, req.filters))
@@ -477,6 +482,7 @@ func (m *RequestManager) routeEOSE(msg InboxMessage) {
req.active = false req.active = false
close(req.buffer) close(req.buffer)
delete(m.reqs, req.id) delete(m.reqs, req.id)
if m.envoy.IsConnected() {
go func() { go func() {
err := m.envoy.Send(envelope.EncloseClose(subID)) err := m.envoy.Send(envelope.EncloseClose(subID))
if err != nil { if err != nil {
@@ -491,6 +497,7 @@ func (m *RequestManager) routeEOSE(msg InboxMessage) {
}() }()
} }
} }
}
func (m *RequestManager) routeClosed(msg InboxMessage) { func (m *RequestManager) routeClosed(msg InboxMessage) {
subID, message, err := envelope.FindClosed(msg.Data) subID, message, err := envelope.FindClosed(msg.Data)