From efbdc8fa7fe9e4d623e8774ed04871cef9161240 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Thu, 12 Nov 2015 23:21:46 +0200 Subject: [PATCH] Added ListenAndServe and ListenAndServeTLS helper functions to Server --- server.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/server.go b/server.go index 83864ee..2c36e36 100644 --- a/server.go +++ b/server.go @@ -2,6 +2,7 @@ package fasthttp import ( "bufio" + "crypto/tls" "errors" "fmt" "io" @@ -277,6 +278,33 @@ func (ctx *RequestCtx) TimeoutError(msg string) { ctx.timeoutErrMsg = msg } +// ListenAndServe serves HTTP requests from the given TCP addr. +func (s *Server) ListenAndServe(addr string) error { + ln, err := net.Listen("tcp", addr) + if err != nil { + return err + } + return s.Serve(ln) +} + +// ListenAndServeTLS serves HTTPS requests from the given TCP addr. +// +// certFile and keyFile are paths to TLS certificate and key files. +func (s *Server) ListenAndServeTLS(addr, certFile, keyFile string) error { + cert, err := tls.LoadX509KeyPair(certFile, keyFile) + if err != nil { + return err + } + tlsConfig := &tls.Config{ + Certificates: []tls.Certificate{cert}, + } + ln, err := tls.Listen("tcp", addr, tlsConfig) + if err != nil { + return err + } + return s.Serve(ln) +} + // Default concurrency used by Server.Serve(). const DefaultConcurrency = 256 * 1024