fix error handler
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
		
							
								
								
									
										6
									
								
								http.go
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								http.go
									
									
									
									
									
								
							| @@ -602,11 +602,15 @@ func (h *httpServer) Name() string { | ||||
|  | ||||
| func NewServer(opts ...server.Option) *httpServer { | ||||
| 	options := server.NewOptions(opts...) | ||||
| 	eh := DefaultErrorHandler | ||||
| 	if v, ok := options.Context.Value(errorHandlerKey{}).(errorHandler); ok && v != nil { | ||||
| 		eh = v | ||||
| 	} | ||||
| 	return &httpServer{ | ||||
| 		opts:         options, | ||||
| 		exit:         make(chan chan error), | ||||
| 		subscribers:  make(map[*httpSubscriber][]broker.Subscriber), | ||||
| 		errorHandler: DefaultErrorHandler, | ||||
| 		errorHandler: eh, | ||||
| 		pathHandlers: rhttp.NewTrie(), | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -68,10 +68,12 @@ func Server(hs *http.Server) server.Option { | ||||
| 	return server.SetOption(serverKey{}, hs) | ||||
| } | ||||
|  | ||||
| type errorHandler func(ctx context.Context, s server.Handler, w http.ResponseWriter, r *http.Request, err error, status int) | ||||
|  | ||||
| type errorHandlerKey struct{} | ||||
|  | ||||
| // ErrorHandler specifies handler for errors | ||||
| func ErrorHandler(fn func(ctx context.Context, s server.Handler, w http.ResponseWriter, r *http.Request, err error, status int)) server.Option { | ||||
| func ErrorHandler(fn errorHandler) server.Option { | ||||
| 	return server.SetOption(errorHandlerKey{}, fn) | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user