mirror of
https://github.com/labstack/echo.git
synced 2025-02-15 13:53:06 +02:00
Merge branch 'mtojek-fix_missing_net_listener'
This commit is contained in:
commit
da010b035d
@ -5,6 +5,8 @@ import (
|
||||
"mime/multipart"
|
||||
"time"
|
||||
|
||||
"net"
|
||||
|
||||
"github.com/labstack/gommon/log"
|
||||
)
|
||||
|
||||
@ -137,6 +139,7 @@ type (
|
||||
// Config defines engine configuration.
|
||||
Config struct {
|
||||
Address string // TCP address to listen on.
|
||||
Listener net.Listener // Custom `net.Listener`. If set, server accepts connections on it.
|
||||
TLSCertfile string // TLS certificate file path.
|
||||
TLSKeyfile string // TLS key file path.
|
||||
ReadTimeout time.Duration // Maximum duration before timing out read of the request.
|
||||
|
@ -123,10 +123,27 @@ func (s *Server) Start() {
|
||||
addr := s.config.Address
|
||||
certfile := s.config.TLSCertfile
|
||||
keyfile := s.config.TLSKeyfile
|
||||
if certfile != "" && keyfile != "" {
|
||||
s.logger.Fatal(fasthttp.ListenAndServeTLS(addr, certfile, keyfile, handler))
|
||||
|
||||
if s.config.Listener == nil {
|
||||
s.startDefaultListener(addr, certfile, keyfile, handler)
|
||||
} else {
|
||||
s.logger.Fatal(fasthttp.ListenAndServe(addr, handler))
|
||||
s.startCustomListener(certfile, keyfile, handler)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Server) startDefaultListener(addr, certfile, keyfile string, h fasthttp.RequestHandler) {
|
||||
if certfile != "" && keyfile != "" {
|
||||
s.logger.Fatal(fasthttp.ListenAndServeTLS(addr, certfile, keyfile, h))
|
||||
} else {
|
||||
s.logger.Fatal(fasthttp.ListenAndServe(addr, h))
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Server) startCustomListener(certfile, keyfile string, h fasthttp.RequestHandler) {
|
||||
if certfile != "" && keyfile != "" {
|
||||
s.logger.Fatal(fasthttp.ServeTLS(s.config.Listener, certfile, keyfile, h))
|
||||
} else {
|
||||
s.logger.Fatal(fasthttp.Serve(s.config.Listener, h))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -94,6 +94,15 @@ func (s *Server) SetLogger(l *log.Logger) {
|
||||
func (s *Server) Start() {
|
||||
certfile := s.config.TLSCertfile
|
||||
keyfile := s.config.TLSKeyfile
|
||||
|
||||
if s.config.Listener == nil {
|
||||
s.startDefaultListener(certfile, keyfile)
|
||||
} else {
|
||||
s.startCustomListener()
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Server) startDefaultListener(certfile, keyfile string) {
|
||||
if certfile != "" && keyfile != "" {
|
||||
s.logger.Fatal(s.ListenAndServeTLS(certfile, keyfile))
|
||||
} else {
|
||||
@ -101,6 +110,10 @@ func (s *Server) Start() {
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Server) startCustomListener() {
|
||||
s.logger.Fatal(s.Serve(s.config.Listener))
|
||||
}
|
||||
|
||||
// ServeHTTP implements `http.Handler` interface.
|
||||
func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
// Request
|
||||
|
@ -575,6 +575,7 @@ func TestRouterAPI(t *testing.T) {
|
||||
func BenchmarkRouterGitHubAPI(b *testing.B) {
|
||||
e := New()
|
||||
r := e.router
|
||||
b.ReportAllocs()
|
||||
|
||||
// Add routes
|
||||
for _, route := range api {
|
||||
@ -584,10 +585,14 @@ func BenchmarkRouterGitHubAPI(b *testing.B) {
|
||||
}
|
||||
|
||||
// Find routes
|
||||
c := e.pool.Get().(*context)
|
||||
for i := 0; i < b.N; i++ {
|
||||
for _, route := range api {
|
||||
// c := e.pool.Get().(*context)
|
||||
c := e.GetContext()
|
||||
r.Find(route.Method, route.Path, c)
|
||||
// router.Find(r.Method, r.Path, c)
|
||||
e.PutContext(c)
|
||||
// e.pool.Put(c)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user