Skip to content

Commit 1b9f647

Browse files
committed
pkg/tool: add ServeHTTP function
Dedup code in syz-ci and syz-hub.
1 parent 4e5820c commit 1b9f647

File tree

4 files changed

+23
-30
lines changed

4 files changed

+23
-30
lines changed

pkg/tool/tool.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ package tool
77
import (
88
"flag"
99
"fmt"
10+
"log"
11+
"net"
12+
"net/http"
1013
"os"
1114
)
1215

@@ -25,6 +28,20 @@ func Init() func() {
2528
return installProfiling(*flagCPUProfile, *flagMEMProfile)
2629
}
2730

31+
// ServeHTPP serves default http mux on the specified address in a separate goroutine.
32+
// Terminates the process on any errors.
33+
func ServeHTTP(addr string) {
34+
ln, err := net.Listen("tcp4", addr)
35+
if err != nil {
36+
log.Fatalf("failed to listen on %v: %v", addr, err)
37+
}
38+
log.Printf("serving http on http://%v", ln.Addr())
39+
go func() {
40+
err := http.Serve(ln, nil)
41+
log.Fatalf("failed to serve http: %v", err)
42+
}()
43+
}
44+
2845
func Failf(msg string, args ...any) {
2946
fmt.Fprintf(os.Stderr, msg+"\n", args...)
3047
os.Exit(1)

syz-ci/syz-ci.go

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ import (
5757
"errors"
5858
"flag"
5959
"fmt"
60-
"net"
6160
"net/http"
6261
_ "net/http/pprof"
6362
"os"
@@ -72,6 +71,7 @@ import (
7271
"github.com/google/syzkaller/pkg/log"
7372
"github.com/google/syzkaller/pkg/mgrconfig"
7473
"github.com/google/syzkaller/pkg/osutil"
74+
"github.com/google/syzkaller/pkg/tool"
7575
"github.com/google/syzkaller/pkg/updater"
7676
"github.com/google/syzkaller/pkg/vcs"
7777
)
@@ -265,7 +265,7 @@ func main() {
265265
shutdownPending := make(chan struct{})
266266
osutil.HandleInterrupts(shutdownPending)
267267

268-
serveHTTP(cfg)
268+
tool.ServeHTTP(cfg.HTTP)
269269

270270
if cfg.Goroot != "" {
271271
os.Setenv("GOROOT", cfg.Goroot)
@@ -396,18 +396,6 @@ loop:
396396
}
397397
}
398398

399-
func serveHTTP(cfg *Config) {
400-
ln, err := net.Listen("tcp4", cfg.HTTP)
401-
if err != nil {
402-
log.Fatalf("failed to listen on %v: %v", cfg.HTTP, err)
403-
}
404-
log.Logf(0, "serving http on http://%v", ln.Addr())
405-
go func() {
406-
err := http.Serve(ln, nil)
407-
log.Fatalf("failed to serve http: %v", err)
408-
}()
409-
}
410-
411399
func uploadSyzkallerBuildError(cfg *Config, commit *vcs.Commit, compilerID string, buildErr error) {
412400
var output []byte
413401
var verbose *osutil.VerboseError

syz-hub/http.go

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,13 @@ package main
66
import (
77
"fmt"
88
"html/template"
9-
"net"
109
"net/http"
1110
"sort"
1211
"strings"
1312

1413
"github.com/google/syzkaller/pkg/log"
1514
)
1615

17-
func (hub *Hub) initHTTP(addr string) {
18-
http.HandleFunc("/", hub.httpSummary)
19-
20-
ln, err := net.Listen("tcp4", addr)
21-
if err != nil {
22-
log.Fatalf("failed to listen on %v: %v", addr, err)
23-
}
24-
log.Logf(0, "serving http on http://%v", ln.Addr())
25-
go func() {
26-
err := http.Serve(ln, nil)
27-
log.Fatalf("failed to serve http: %v", err)
28-
}()
29-
}
30-
3116
func (hub *Hub) httpSummary(w http.ResponseWriter, r *http.Request) {
3217
hub.mu.Lock()
3318
defer hub.mu.Unlock()

syz-hub/hub.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package main
66
import (
77
"flag"
88
"fmt"
9+
"net/http"
910
"strings"
1011
"sync"
1112
"time"
@@ -14,6 +15,7 @@ import (
1415
"github.com/google/syzkaller/pkg/config"
1516
"github.com/google/syzkaller/pkg/log"
1617
"github.com/google/syzkaller/pkg/rpctype"
18+
"github.com/google/syzkaller/pkg/tool"
1719
"github.com/google/syzkaller/syz-hub/state"
1820
)
1921

@@ -59,7 +61,8 @@ func main() {
5961
hub.keys[mgr.Name] = mgr.Key
6062
}
6163

62-
hub.initHTTP(cfg.HTTP)
64+
http.HandleFunc("/", hub.httpSummary)
65+
tool.ServeHTTP(cfg.HTTP)
6366
go hub.purgeOldManagers()
6467

6568
s, err := rpctype.NewRPCServer(cfg.RPC, "Hub", hub)

0 commit comments

Comments
 (0)