removed using http.Serve and add using *http.Server + Shutdown
This commit is contained in:
		
				
					committed by
					
						 Евстигнеев Денис Сергеевич
						Евстигнеев Денис Сергеевич
					
				
			
			
				
	
			
			
			
						parent
						
							41f7bdf182
						
					
				
				
					commit
					1d5142d619
				
			
							
								
								
									
										24
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| # Binaries for programs and plugins | ||||
| *.exe | ||||
| *.exe~ | ||||
| *.dll | ||||
| *.so | ||||
| *.dylib | ||||
| bin | ||||
|  | ||||
| # Test binary, built with `go test -c` | ||||
| *.test | ||||
|  | ||||
| # Output of the go coverage tool, specifically when used with LiteIDE | ||||
| *.out | ||||
|  | ||||
| # Dependency directories (remove the comment below to include it) | ||||
| # vendor/ | ||||
|  | ||||
| # Go workspace file | ||||
| go.work | ||||
|  | ||||
| # General | ||||
| .DS_Store | ||||
| .idea | ||||
| .vscode | ||||
							
								
								
									
										22
									
								
								http.go
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								http.go
									
									
									
									
									
								
							| @@ -408,7 +408,7 @@ func (h *Server) Start() error { | ||||
| 	h.Unlock() | ||||
|  | ||||
| 	var handler http.Handler | ||||
| 	var srvFunc func(net.Listener) error | ||||
| 	//var srvFunc func(net.Listener) error | ||||
|  | ||||
| 	// nolint: nestif | ||||
| 	if h.opts.Context != nil { | ||||
| @@ -451,6 +451,7 @@ func (h *Server) Start() error { | ||||
|  | ||||
| 	fn := handler | ||||
|  | ||||
| 	var hs *http.Server | ||||
| 	if h.opts.Context != nil { | ||||
| 		if mwf, ok := h.opts.Context.Value(middlewareKey{}).([]func(http.Handler) http.Handler); ok && len(mwf) > 0 { | ||||
| 			// wrap the handler func | ||||
| @@ -458,12 +459,22 @@ func (h *Server) Start() error { | ||||
| 				fn = mwf[i-1](fn) | ||||
| 			} | ||||
| 		} | ||||
| 		if hs, ok := h.opts.Context.Value(serverKey{}).(*http.Server); ok && hs != nil { | ||||
| 		var ok bool | ||||
| 		if hs, ok = h.opts.Context.Value(serverKey{}).(*http.Server); ok && hs != nil { | ||||
| 			hs.Handler = fn | ||||
| 			srvFunc = hs.Serve | ||||
| 			//srvFunc = hs.Serve | ||||
| 		} else { | ||||
| 			hs = &http.Server{Handler: fn} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	go func() { | ||||
| 		if cerr := hs.Serve(ts); cerr != nil && !errors.Is(cerr, net.ErrClosed) { | ||||
| 			h.opts.Logger.Error(h.opts.Context, cerr) | ||||
| 		} | ||||
| 	}() | ||||
|  | ||||
| 	/* | ||||
| 		if srvFunc != nil { | ||||
| 			go func() { | ||||
| 				if cerr := srvFunc(ts); cerr != nil && !errors.Is(cerr, net.ErrClosed) { | ||||
| @@ -478,6 +489,8 @@ func (h *Server) Start() error { | ||||
| 			}() | ||||
| 		} | ||||
|  | ||||
| 	*/ | ||||
|  | ||||
| 	go func() { | ||||
| 		t := new(time.Ticker) | ||||
|  | ||||
| @@ -536,6 +549,9 @@ func (h *Server) Start() error { | ||||
| 			config.Logger.Errorf(config.Context, "Server deregister error: %s", err) | ||||
| 		} | ||||
|  | ||||
| 		// err ignore and empty cotnext | ||||
| 		hs.Shutdown(context.Background()) | ||||
|  | ||||
| 		ch <- ts.Close() | ||||
| 	}() | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user