Browse Source

fix windows build broken by #416

for-closed-social
Lunny Xiao 7 years ago
parent
commit
bf85c82087
No known key found for this signature in database GPG Key ID: C3B7C91B632F738A
3 changed files with 65 additions and 24 deletions
  1. +2
    -24
      cmd/web.go
  2. +44
    -0
      cmd/web_graceful.go
  3. +19
    -0
      cmd/web_windows.go

+ 2
- 24
cmd/web.go View File

@ -5,7 +5,6 @@
package cmd package cmd
import ( import (
"crypto/tls"
"fmt" "fmt"
"net" "net"
"net/http" "net/http"
@ -31,7 +30,6 @@ import (
"code.gitea.io/gitea/routers/repo" "code.gitea.io/gitea/routers/repo"
"code.gitea.io/gitea/routers/user" "code.gitea.io/gitea/routers/user"
"github.com/facebookgo/grace/gracehttp"
"github.com/go-macaron/binding" "github.com/go-macaron/binding"
"github.com/go-macaron/cache" "github.com/go-macaron/cache"
"github.com/go-macaron/captcha" "github.com/go-macaron/captcha"
@ -616,29 +614,9 @@ func runWeb(ctx *cli.Context) error {
var err error var err error
switch setting.Protocol { switch setting.Protocol {
case setting.HTTP: case setting.HTTP:
err = gracehttp.Serve(&http.Server{
Addr: listenAddr,
Handler: m,
})
err = runHTTP(listenAddr, m)
case setting.HTTPS: case setting.HTTPS:
config := &tls.Config{
MinVersion: tls.VersionTLS10,
}
if config.NextProtos == nil {
config.NextProtos = []string{"http/1.1"}
}
config.Certificates = make([]tls.Certificate, 1)
config.Certificates[0], err = tls.LoadX509KeyPair(setting.CertFile, setting.KeyFile)
if err != nil {
log.Fatal(4, "Failed to load https cert file %s: %v", listenAddr, err)
}
err = gracehttp.Serve(&http.Server{
Addr: listenAddr,
Handler: m,
TLSConfig: config,
})
err = runHTTPS(listenAddr, setting.CertFile, setting.KeyFile, m)
case setting.FCGI: case setting.FCGI:
err = fcgi.Serve(nil, m) err = fcgi.Serve(nil, m)
case setting.UnixSocket: case setting.UnixSocket:

+ 44
- 0
cmd/web_graceful.go View File

@ -0,0 +1,44 @@
// +build !windows
// Copyright 2016 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package cmd
import (
"crypto/tls"
"log"
"net/http"
"github.com/facebookgo/grace/gracehttp"
)
func runHTTP(listenAddr string, m http.Handler) error {
return gracehttp.Serve(&http.Server{
Addr: listenAddr,
Handler: m,
})
}
func runHTTPS(listenAddr, certFile, keyFile string, m http.Handler) error {
config := &tls.Config{
MinVersion: tls.VersionTLS10,
}
if config.NextProtos == nil {
config.NextProtos = []string{"http/1.1"}
}
config.Certificates = make([]tls.Certificate, 1)
var err error
config.Certificates[0], err = tls.LoadX509KeyPair(certFile, keyFile)
if err != nil {
log.Fatal(4, "Failed to load https cert file %s: %v", listenAddr, err)
}
return gracehttp.Serve(&http.Server{
Addr: listenAddr,
Handler: m,
TLSConfig: config,
})
}

+ 19
- 0
cmd/web_windows.go View File

@ -0,0 +1,19 @@
// +build windows
// Copyright 2016 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package cmd
import (
"net/http"
)
func runHTTP(listenAddr string, m http.Handler) error {
return http.ListenAndServe(listenAddr, m)
}
func runHTTPS(listenAddr, certFile, keyFile string, m http.Handler) error {
return http.ListenAndServeTLS(listenAddr, certFile, keyFile, m)
}

Loading…
Cancel
Save