Unix sockets support

This commit is contained in:
Manu Mtz-Almeida 2015-05-19 00:45:08 +02:00
parent f9952b0545
commit cd6e95f0e4

21
gin.go
View File

@ -6,7 +6,9 @@ package gin
import ( import (
"html/template" "html/template"
"net"
"net/http" "net/http"
"os"
"sync" "sync"
"github.com/gin-gonic/gin/binding" "github.com/gin-gonic/gin/binding"
@ -159,7 +161,7 @@ func (engine *Engine) handle(method, path string, handlers HandlersChain) {
func (engine *Engine) Run(addr string) (err error) { func (engine *Engine) Run(addr string) (err error) {
debugPrint("Listening and serving HTTP on %s\n", addr) debugPrint("Listening and serving HTTP on %s\n", addr)
defer debugPrintError(err) defer func() { debugPrintError(err) }()
err = http.ListenAndServe(addr, engine) err = http.ListenAndServe(addr, engine)
return return
@ -167,12 +169,27 @@ func (engine *Engine) Run(addr string) (err error) {
func (engine *Engine) RunTLS(addr string, cert string, key string) (err error) { func (engine *Engine) RunTLS(addr string, cert string, key string) (err error) {
debugPrint("Listening and serving HTTPS on %s\n", addr) debugPrint("Listening and serving HTTPS on %s\n", addr)
defer debugPrintError(err) defer func() { debugPrintError(err) }()
err = http.ListenAndServe(addr, engine) err = http.ListenAndServe(addr, engine)
return return
} }
func (engine *Engine) RunUnix(file string) (err error) {
debugPrint("Listening and serving HTTP on unix:/%s", file)
defer func() { debugPrintError(err) }()
os.Remove(file)
listener, err2 := net.Listen("unix", file)
err = err2
if err != nil {
return
}
defer listener.Close()
err = http.Serve(listener, engine)
return
}
// ServeHTTP makes the router implement the http.Handler interface. // ServeHTTP makes the router implement the http.Handler interface.
func (engine *Engine) ServeHTTP(w http.ResponseWriter, req *http.Request) { func (engine *Engine) ServeHTTP(w http.ResponseWriter, req *http.Request) {
c := engine.getcontext(w, req) c := engine.getcontext(w, req)