11package main
22
33import (
4+ "errors"
45 "fmt"
56 "net/http"
67 "os"
@@ -57,7 +58,7 @@ func main() {
5758 j .Init ()
5859 j .Run ()
5960
60- log .Infof ("starting http server on %s" , opts .ServerBind )
61+ log .Infof ("starting http server on %s" , opts .Server . Bind )
6162 startHttpServer ()
6263}
6364
@@ -68,7 +69,8 @@ func initArgparser() {
6869
6970 // check if there is an parse error
7071 if err != nil {
71- if flagsErr , ok := err .(* flags.Error ); ok && flagsErr .Type == flags .ErrHelp {
72+ var flagsErr * flags.Error
73+ if ok := errors .As (err , & flagsErr ); ok && flagsErr .Type == flags .ErrHelp {
7274 os .Exit (0 )
7375 } else {
7476 fmt .Println ()
@@ -184,21 +186,29 @@ func initAzureConnection() {
184186
185187// start and handle prometheus handler
186188func startHttpServer () {
189+ mux := http .NewServeMux ()
190+
187191 // healthz
188- http .HandleFunc ("/healthz" , func (w http.ResponseWriter , r * http.Request ) {
192+ mux .HandleFunc ("/healthz" , func (w http.ResponseWriter , r * http.Request ) {
189193 if _ , err := fmt .Fprint (w , "Ok" ); err != nil {
190194 log .Error (err )
191195 }
192196 })
193197
194198 // readyz
195- http .HandleFunc ("/readyz" , func (w http.ResponseWriter , r * http.Request ) {
199+ mux .HandleFunc ("/readyz" , func (w http.ResponseWriter , r * http.Request ) {
196200 if _ , err := fmt .Fprint (w , "Ok" ); err != nil {
197201 log .Error (err )
198202 }
199203 })
200204
201- http .Handle ("/metrics" , azuretracing .RegisterAzureMetricAutoClean (promhttp .Handler ()))
205+ mux .Handle ("/metrics" , azuretracing .RegisterAzureMetricAutoClean (promhttp .Handler ()))
202206
203- log .Fatal (http .ListenAndServe (opts .ServerBind , nil ))
207+ srv := & http.Server {
208+ Addr : opts .Server .Bind ,
209+ Handler : mux ,
210+ ReadTimeout : opts .Server .ReadTimeout ,
211+ WriteTimeout : opts .Server .WriteTimeout ,
212+ }
213+ log .Fatal (srv .ListenAndServe ())
204214}
0 commit comments