diff --git a/main.go b/main.go index 7d2c717..f8fb35d 100644 --- a/main.go +++ b/main.go @@ -223,7 +223,7 @@ func main() { }(conn) }(l) } else { - log.Println("Error creating echo server: %v\n", err) + log.Printf("Error creating echo server: %v\n", err) } sigs := make(chan os.Signal, 1) diff --git a/tcp-connection.go b/tcp-connection.go index 6c4cf6f..6487cef 100644 --- a/tcp-connection.go +++ b/tcp-connection.go @@ -174,7 +174,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) @@ -194,7 +194,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: %v\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 a1da4af..331295d 100644 --- a/tcp-connection_test.go +++ b/tcp-connection_test.go @@ -21,7 +21,7 @@ func TestGenericConnection(t *testing.T) { return nil }) listener.AddHandler(3, func(input *FrameWithPayload, resultChan chan<- FrameWithPayload) error { - return fmt.Errorf("Error") + return fmt.Errorf("Error in custom handler") }) r, err := conn.Call(1, datta) if err != nil {