updating daemon addr output
Juan Batiz-Benet committed
Nov 18, 2014 at 08:17 UTC
a7d1fd42d8d693ccb595fdb614965c6a6a079bd1
2 files changed
+26
-20
cmd/ipfs/daemon.go
+25
-19
@@ -21,6 +21,8 @@ const (
21
mountKwd = "mount"
22
ipfsMountKwd = "mount-ipfs"
23
ipnsMountKwd = "mount-ipns"
24
+ // apiAddrKwd = "address-api"
25
+ // swarmAddrKwd = "address-swarm"
26
)
27
28
var daemonCmd = &cmds.Command{
@@ -40,6 +42,10 @@ the daemon.
42
cmds.BoolOption(mountKwd, "Mounts IPFS to the filesystem"),
43
cmds.StringOption(ipfsMountKwd, "Path to the mountpoint for IPFS (if using --mount)"),
44
cmds.StringOption(ipnsMountKwd, "Path to the mountpoint for IPNS (if using --mount)"),
45
+
46
+ // TODO: add way to override addresses. tricky part: updating the config if also --init.
47
+ // cmds.StringOption(apiAddrKwd, "Address for the daemon rpc API (overrides config)"),
48
+ // cmds.StringOption(swarmAddrKwd, "Address for the swarm socket (overrides config)"),
49
},
50
Subcommands: map[string]*cmds.Command{},
51
Run: daemonFunc,
@@ -86,19 +92,16 @@ func daemonFunc(req cmds.Request) (interface{}, error) {
92
}
93
defer lock.Close()
94
89
- // make sure we construct online node.
95
+ // OK!!! Now we're ready to construct the node.
96
+ // make sure we construct an online node.
97
ctx.Online = true
98
node, err := ctx.GetNode()
99
if err != nil {
100
return nil, err
101
}
102
96
- addr, err := ma.NewMultiaddr(cfg.Addresses.API)
97
- if err != nil {
98
- return nil, err
99
- }
100
-
101
- _, host, err := manet.DialArgs(addr)
103
+ // verify api address is valid multiaddr
104
+ apiMaddr, err := ma.NewMultiaddr(cfg.Addresses.API)
105
if err != nil {
106
return nil, err
107
}
@@ -131,6 +134,17 @@ func daemonFunc(req cmds.Request) (interface{}, error) {
134
}
135
}
136
137
+ return nil, listenAndServeAPI(node, req, apiMaddr)
138
+}
139
+
140
+func listenAndServeAPI(node *core.IpfsNode, req cmds.Request, addr ma.Multiaddr) error {
141
+
142
+ _, host, err := manet.DialArgs(addr)
143
+ if err != nil {
144
+ return err
145
+ }
146
+
147
+ server := manners.NewServer()
148
mux := http.NewServeMux()
149
cmdHandler := cmdsHttp.NewHandler(*req.Context(), commands.Root)
150
mux.Handle(cmdsHttp.ApiPath+"/", cmdHandler)
@@ -138,15 +152,6 @@ func daemonFunc(req cmds.Request) (interface{}, error) {
152
ifpsHandler := &ipfsHandler{node}
153
mux.Handle("/ipfs/", ifpsHandler)
154
141
- err = listenAndServe(node, mux, host)
142
- return nil, err
143
-}
144
-
145
-func listenAndServe(node *core.IpfsNode, mux *http.ServeMux, host string) error {
146
-
147
- fmt.Printf("API server listening on '%s'\n", host)
148
- s := manners.NewServer()
149
-
155
done := make(chan struct{}, 1)
156
defer func() {
157
done <- struct{}{}
@@ -160,11 +165,12 @@ func listenAndServe(node *core.IpfsNode, mux *http.ServeMux, host string) error
165
return
166
}
167
163
- log.Info("terminating daemon at %s...", host)
164
- s.Shutdown <- true
168
+ log.Info("terminating daemon at %s...", addr)
169
+ server.Shutdown <- true
170
}()
171
167
- if err := s.ListenAndServe(host, mux); err != nil {
172
+ fmt.Printf("daemon listening on %s\n", addr)
173
+ if err := server.ListenAndServe(host, mux); err != nil {
174
return err
175
}
176
test/lib/test-lib.sh
+1
-1
@@ -58,7 +58,7 @@ test_launch_ipfs_mount() {
58
59
test_expect_success FUSE "'ipfs daemon' output looks good" '
60
IPFS_PID=$! &&
61
- echo "API server listening on '\''127.0.0.1:5001'\''" >expected &&
61
+ echo "daemon listening on /ip4/127.0.0.1/tcp/5001" >expected &&
62
test_cmp_repeat_10_sec expected actual
63
'
64