2019-10-15 16:39:51 +03:00
// Copyright 2019 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2019-10-15 16:39:51 +03:00
package graceful
import (
2021-05-31 09:18:11 +03:00
"context"
2019-10-15 16:39:51 +03:00
"crypto/tls"
2021-05-31 09:18:11 +03:00
"net"
2019-10-15 16:39:51 +03:00
"net/http"
)
2021-03-08 05:43:59 +03:00
func newHTTPServer ( network , address , name string , handler http . Handler ) ( * Server , ServeFunction ) {
server := NewServer ( network , address , name )
2019-10-15 16:39:51 +03:00
httpServer := http . Server {
2023-11-15 17:02:46 +03:00
Handler : handler ,
BaseContext : func ( net . Listener ) context . Context { return GetManager ( ) . HammerContext ( ) } ,
2019-10-15 16:39:51 +03:00
}
server . OnShutdown = func ( ) {
httpServer . SetKeepAlivesEnabled ( false )
}
return server , httpServer . Serve
}
// HTTPListenAndServe listens on the provided network address and then calls Serve
// to handle requests on incoming connections.
2022-08-21 21:20:43 +03:00
func HTTPListenAndServe ( network , address , name string , handler http . Handler , useProxyProtocol bool ) error {
2021-03-08 05:43:59 +03:00
server , lHandler := newHTTPServer ( network , address , name , handler )
2022-08-21 21:20:43 +03:00
return server . ListenAndServe ( lHandler , useProxyProtocol )
2019-10-15 16:39:51 +03:00
}
// HTTPListenAndServeTLSConfig listens on the provided network address and then calls Serve
// to handle requests on incoming connections.
2022-08-21 21:20:43 +03:00
func HTTPListenAndServeTLSConfig ( network , address , name string , tlsConfig * tls . Config , handler http . Handler , useProxyProtocol , proxyProtocolTLSBridging bool ) error {
2021-03-08 05:43:59 +03:00
server , lHandler := newHTTPServer ( network , address , name , handler )
2022-08-21 21:20:43 +03:00
return server . ListenAndServeTLSConfig ( tlsConfig , lHandler , useProxyProtocol , proxyProtocolTLSBridging )
2019-10-15 16:39:51 +03:00
}