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 | ||||||
							
								
								
									
										48
									
								
								http.go
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								http.go
									
									
									
									
									
								
							| @@ -408,7 +408,7 @@ func (h *Server) Start() error { | |||||||
| 	h.Unlock() | 	h.Unlock() | ||||||
|  |  | ||||||
| 	var handler http.Handler | 	var handler http.Handler | ||||||
| 	var srvFunc func(net.Listener) error | 	//var srvFunc func(net.Listener) error | ||||||
|  |  | ||||||
| 	// nolint: nestif | 	// nolint: nestif | ||||||
| 	if h.opts.Context != nil { | 	if h.opts.Context != nil { | ||||||
| @@ -451,6 +451,7 @@ func (h *Server) Start() error { | |||||||
|  |  | ||||||
| 	fn := handler | 	fn := handler | ||||||
|  |  | ||||||
|  | 	var hs *http.Server | ||||||
| 	if h.opts.Context != nil { | 	if h.opts.Context != nil { | ||||||
| 		if mwf, ok := h.opts.Context.Value(middlewareKey{}).([]func(http.Handler) http.Handler); ok && len(mwf) > 0 { | 		if mwf, ok := h.opts.Context.Value(middlewareKey{}).([]func(http.Handler) http.Handler); ok && len(mwf) > 0 { | ||||||
| 			// wrap the handler func | 			// wrap the handler func | ||||||
| @@ -458,25 +459,37 @@ func (h *Server) Start() error { | |||||||
| 				fn = mwf[i-1](fn) | 				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 | 			hs.Handler = fn | ||||||
| 			srvFunc = hs.Serve | 			//srvFunc = hs.Serve | ||||||
|  | 		} else { | ||||||
|  | 			hs = &http.Server{Handler: fn} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if srvFunc != nil { | 	go func() { | ||||||
| 		go func() { | 		if cerr := hs.Serve(ts); cerr != nil && !errors.Is(cerr, net.ErrClosed) { | ||||||
| 			if cerr := srvFunc(ts); cerr != nil && !errors.Is(cerr, net.ErrClosed) { | 			h.opts.Logger.Error(h.opts.Context, cerr) | ||||||
| 				h.opts.Logger.Error(h.opts.Context, cerr) | 		} | ||||||
| 			} | 	}() | ||||||
| 		}() |  | ||||||
| 	} else { | 	/* | ||||||
| 		go func() { | 		if srvFunc != nil { | ||||||
| 			if cerr := http.Serve(ts, fn); cerr != nil && !errors.Is(cerr, net.ErrClosed) { | 			go func() { | ||||||
| 				h.opts.Logger.Error(h.opts.Context, cerr) | 				if cerr := srvFunc(ts); cerr != nil && !errors.Is(cerr, net.ErrClosed) { | ||||||
| 			} | 					h.opts.Logger.Error(h.opts.Context, cerr) | ||||||
| 		}() | 				} | ||||||
| 	} | 			}() | ||||||
|  | 		} else { | ||||||
|  | 			go func() { | ||||||
|  | 				if cerr := http.Serve(ts, fn); cerr != nil && !errors.Is(cerr, net.ErrClosed) { | ||||||
|  | 					h.opts.Logger.Error(h.opts.Context, cerr) | ||||||
|  | 				} | ||||||
|  | 			}() | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 	*/ | ||||||
|  |  | ||||||
| 	go func() { | 	go func() { | ||||||
| 		t := new(time.Ticker) | 		t := new(time.Ticker) | ||||||
| @@ -536,6 +549,9 @@ func (h *Server) Start() error { | |||||||
| 			config.Logger.Errorf(config.Context, "Server deregister error: %s", err) | 			config.Logger.Errorf(config.Context, "Server deregister error: %s", err) | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | 		// err ignore and empty cotnext | ||||||
|  | 		hs.Shutdown(context.Background()) | ||||||
|  |  | ||||||
| 		ch <- ts.Close() | 		ch <- ts.Close() | ||||||
| 	}() | 	}() | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user