aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pkg/tool/tool.go17
-rw-r--r--syz-ci/syz-ci.go16
-rw-r--r--syz-hub/http.go15
-rw-r--r--syz-hub/hub.go5
4 files changed, 23 insertions, 30 deletions
diff --git a/pkg/tool/tool.go b/pkg/tool/tool.go
index d67949355..07f260339 100644
--- a/pkg/tool/tool.go
+++ b/pkg/tool/tool.go
@@ -7,6 +7,9 @@ package tool
import (
"flag"
"fmt"
+ "log"
+ "net"
+ "net/http"
"os"
)
@@ -25,6 +28,20 @@ func Init() func() {
return installProfiling(*flagCPUProfile, *flagMEMProfile)
}
+// ServeHTPP serves default http mux on the specified address in a separate goroutine.
+// Terminates the process on any errors.
+func ServeHTTP(addr string) {
+ ln, err := net.Listen("tcp4", addr)
+ if err != nil {
+ log.Fatalf("failed to listen on %v: %v", addr, err)
+ }
+ log.Printf("serving http on http://%v", ln.Addr())
+ go func() {
+ err := http.Serve(ln, nil)
+ log.Fatalf("failed to serve http: %v", err)
+ }()
+}
+
func Failf(msg string, args ...any) {
fmt.Fprintf(os.Stderr, msg+"\n", args...)
os.Exit(1)
diff --git a/syz-ci/syz-ci.go b/syz-ci/syz-ci.go
index fd1f2a7bb..644b290da 100644
--- a/syz-ci/syz-ci.go
+++ b/syz-ci/syz-ci.go
@@ -57,7 +57,6 @@ import (
"errors"
"flag"
"fmt"
- "net"
"net/http"
_ "net/http/pprof"
"os"
@@ -72,6 +71,7 @@ import (
"github.com/google/syzkaller/pkg/log"
"github.com/google/syzkaller/pkg/mgrconfig"
"github.com/google/syzkaller/pkg/osutil"
+ "github.com/google/syzkaller/pkg/tool"
"github.com/google/syzkaller/pkg/updater"
"github.com/google/syzkaller/pkg/vcs"
)
@@ -265,7 +265,7 @@ func main() {
shutdownPending := make(chan struct{})
osutil.HandleInterrupts(shutdownPending)
- serveHTTP(cfg)
+ tool.ServeHTTP(cfg.HTTP)
if cfg.Goroot != "" {
os.Setenv("GOROOT", cfg.Goroot)
@@ -396,18 +396,6 @@ loop:
}
}
-func serveHTTP(cfg *Config) {
- ln, err := net.Listen("tcp4", cfg.HTTP)
- if err != nil {
- log.Fatalf("failed to listen on %v: %v", cfg.HTTP, err)
- }
- log.Logf(0, "serving http on http://%v", ln.Addr())
- go func() {
- err := http.Serve(ln, nil)
- log.Fatalf("failed to serve http: %v", err)
- }()
-}
-
func uploadSyzkallerBuildError(cfg *Config, commit *vcs.Commit, compilerID string, buildErr error) {
var output []byte
var verbose *osutil.VerboseError
diff --git a/syz-hub/http.go b/syz-hub/http.go
index 14fa43f7f..46994ed2f 100644
--- a/syz-hub/http.go
+++ b/syz-hub/http.go
@@ -6,7 +6,6 @@ package main
import (
"fmt"
"html/template"
- "net"
"net/http"
"sort"
"strings"
@@ -14,20 +13,6 @@ import (
"github.com/google/syzkaller/pkg/log"
)
-func (hub *Hub) initHTTP(addr string) {
- http.HandleFunc("/", hub.httpSummary)
-
- ln, err := net.Listen("tcp4", addr)
- if err != nil {
- log.Fatalf("failed to listen on %v: %v", addr, err)
- }
- log.Logf(0, "serving http on http://%v", ln.Addr())
- go func() {
- err := http.Serve(ln, nil)
- log.Fatalf("failed to serve http: %v", err)
- }()
-}
-
func (hub *Hub) httpSummary(w http.ResponseWriter, r *http.Request) {
hub.mu.Lock()
defer hub.mu.Unlock()
diff --git a/syz-hub/hub.go b/syz-hub/hub.go
index 4b7b61354..cbeb57b12 100644
--- a/syz-hub/hub.go
+++ b/syz-hub/hub.go
@@ -6,6 +6,7 @@ package main
import (
"flag"
"fmt"
+ "net/http"
"strings"
"sync"
"time"
@@ -14,6 +15,7 @@ import (
"github.com/google/syzkaller/pkg/config"
"github.com/google/syzkaller/pkg/log"
"github.com/google/syzkaller/pkg/rpctype"
+ "github.com/google/syzkaller/pkg/tool"
"github.com/google/syzkaller/syz-hub/state"
)
@@ -59,7 +61,8 @@ func main() {
hub.keys[mgr.Name] = mgr.Key
}
- hub.initHTTP(cfg.HTTP)
+ http.HandleFunc("/", hub.httpSummary)
+ tool.ServeHTTP(cfg.HTTP)
go hub.purgeOldManagers()
s, err := rpctype.NewRPCServer(cfg.RPC, "Hub", hub)