diff --git a/tcp-connection.go b/tcp-connection.go index b447b0f..57a82f8 100644 --- a/tcp-connection.go +++ b/tcp-connection.go @@ -180,7 +180,7 @@ func (l *GenericListener) HandleConnection(conn net.Conn) { case frame := <-ch: err := l.HandleFrame(conn, &frame) if err != nil { - log.Fatalf("Error handling frame: %v\n", err) + log.Fatalf("Error in handler: %v\n", err) } case <-time.After(MaxCallDuration): close(ch) @@ -200,7 +200,8 @@ func (l *GenericListener) HandleFrame(conn net.Conn, frame *FrameWithPayload) er defer close(resultChan) err := handler(frame, resultChan) if err != nil { - log.Fatalf("Error handling frame: %s\n", err) + resultChan <- MakeFrameWithPayload(frame.Type, 500, []byte(err.Error())) + log.Printf("Handler returned error: %s", err) } result := <-resultChan err = SendFrame(conn, &result) diff --git a/tcp-connection_test.go b/tcp-connection_test.go index 2300330..2f1d9f5 100644 --- a/tcp-connection_test.go +++ b/tcp-connection_test.go @@ -1,6 +1,7 @@ package main import ( + "fmt" "net" "testing" @@ -32,8 +33,7 @@ func TestGenericConnection(t *testing.T) { return nil }) listener.AddHandler(3, func(input *FrameWithPayload, resultChan chan<- FrameWithPayload) error { - resultChan <- MakeFrameWithPayload(2, 200, datta) - return nil //fmt.Errorf("Error") + return fmt.Errorf("Error in custom handler") }) r, err := conn.Call(1, datta) if err != nil {