You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2018/10/11 22:21:40 UTC
[08/12] qpid-proton git commit: PROTON-1956: [go] server does not
close transport on unexpected disconnect
PROTON-1956: [go] server does not close transport on unexpected disconnect
Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/2a84494c
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/2a84494c
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/2a84494c
Branch: refs/heads/master
Commit: 2a84494c4befb40c674116aeba7e563e68b9537d
Parents: 84844a9
Author: Alan Conway <ac...@redhat.com>
Authored: Tue Oct 9 16:30:05 2018 -0400
Committer: Alan Conway <ac...@redhat.com>
Committed: Thu Oct 11 15:14:20 2018 -0400
----------------------------------------------------------------------
go/src/qpid.apache.org/electron/electron_test.go | 7 ++++---
go/src/qpid.apache.org/electron/handler.go | 10 +++++++---
go/src/qpid.apache.org/proton/handlers.go | 7 +++++--
3 files changed, 16 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/2a84494c/go/src/qpid.apache.org/electron/electron_test.go
----------------------------------------------------------------------
diff --git a/go/src/qpid.apache.org/electron/electron_test.go b/go/src/qpid.apache.org/electron/electron_test.go
index cf881e6..a648a18 100644
--- a/go/src/qpid.apache.org/electron/electron_test.go
+++ b/go/src/qpid.apache.org/electron/electron_test.go
@@ -21,9 +21,10 @@ package electron
import (
"fmt"
- "qpid.apache.org/amqp"
"testing"
"time"
+
+ "qpid.apache.org/amqp"
)
// Send a message one way with a client sender and server receiver, verify ack.
@@ -325,7 +326,7 @@ func TestHeartbeat(t *testing.T) {
unfreeze <- true // Unfreeze the server
<-p.server.Done()
- if amqp.ResourceLimitExceeded != p.server.Error().(amqp.Error).Name {
- t.Error("bad timeout error:", p.server.Error())
+ if p.server.Error() == nil {
+ t.Error("expected server side time-out or connection abort error")
}
}
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/2a84494c/go/src/qpid.apache.org/electron/handler.go
----------------------------------------------------------------------
diff --git a/go/src/qpid.apache.org/electron/handler.go b/go/src/qpid.apache.org/electron/handler.go
index af1efd6..899d6a9 100644
--- a/go/src/qpid.apache.org/electron/handler.go
+++ b/go/src/qpid.apache.org/electron/handler.go
@@ -126,9 +126,13 @@ func (h *handler) HandleMessagingEvent(t proton.MessagingEvent, e proton.Event)
h.shutdown(proton.EndpointError(e.Connection()))
case proton.MDisconnected:
- err := e.Transport().Condition().Error()
- if err == nil {
- err = amqp.Errorf(amqp.IllegalState, "unexpected disconnect on %s", h.connection)
+ var err error
+ if err = e.Connection().RemoteCondition().Error(); err == nil {
+ if err = e.Connection().Condition().Error(); err == nil {
+ if err = e.Transport().Condition().Error(); err == nil {
+ err = amqp.Errorf(amqp.IllegalState, "unexpected disconnect on %s", h.connection)
+ }
+ }
}
h.shutdown(err)
}
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/2a84494c/go/src/qpid.apache.org/proton/handlers.go
----------------------------------------------------------------------
diff --git a/go/src/qpid.apache.org/proton/handlers.go b/go/src/qpid.apache.org/proton/handlers.go
index f101548..bbb5014 100644
--- a/go/src/qpid.apache.org/proton/handlers.go
+++ b/go/src/qpid.apache.org/proton/handlers.go
@@ -25,7 +25,6 @@ import "fmt"
type EventHandler interface {
// HandleEvent is called with an event.
// Typically HandleEvent() is implemented as a switch on e.Type()
- // Returning an error will stop the Engine.
HandleEvent(e Event)
}
@@ -38,7 +37,6 @@ type EventHandler interface {
type MessagingHandler interface {
// HandleMessagingEvent is called with MessagingEvent.
// Typically HandleEvent() is implemented as a switch on e.Type()
- // Returning an error will stop the Engine.
HandleMessagingEvent(MessagingEvent, Event)
}
@@ -351,6 +349,11 @@ func (d *MessagingAdapter) HandleEvent(e Event) {
d.outgoing(e)
}
+ case ETransportTailClosed:
+ if !e.Connection().State().RemoteClosed() { // Unexpected transport closed
+ e.Transport().CloseHead() // Complete transport close, no connection close expected
+ }
+
case ETransportClosed:
d.mhandler.HandleMessagingEvent(MDisconnected, e)
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org