diff --git a/cmd/ipfs/daemon.go b/cmd/ipfs/daemon.go index e62c2f374ef..0de1790c176 100644 --- a/cmd/ipfs/daemon.go +++ b/cmd/ipfs/daemon.go @@ -151,7 +151,7 @@ Headers. Options: []cmdkit.Option{ cmdkit.BoolOption(initOptionKwd, "Initialize ipfs with default settings if not already initialized"), cmdkit.StringOption(initProfileOptionKwd, "Configuration profiles to apply for --init. See ipfs init --help for more"), - cmdkit.StringOption(routingOptionKwd, "Overrides the routing option").WithDefault("default"), + cmdkit.StringOption(routingOptionKwd, "Overrides the routing option").WithDefault(routingOptionDefaultKwd), cmdkit.BoolOption(mountKwd, "Mounts IPFS to the filesystem"), cmdkit.BoolOption(writableKwd, "Enable writing objects (with POST, PUT and DELETE)"), cmdkit.StringOption(ipfsMountKwd, "Path to the mountpoint for IPFS (if using --mount). Defaults to config setting."), diff --git a/core/core.go b/core/core.go index e7a423c68c2..3733a8c096b 100644 --- a/core/core.go +++ b/core/core.go @@ -158,7 +158,6 @@ type Mounts struct { } func (n *IpfsNode) startOnlineServices(ctx context.Context, routingOption RoutingOption, hostOption HostOption, do DiscoveryOption, pubsub, ipnsps, mplex bool) error { - if n.PeerHost != nil { // already online. return errors.New("node already online") } diff --git a/core/corehttp/commands.go b/core/corehttp/commands.go index 22a5c5beb70..eaae1de21ec 100644 --- a/core/corehttp/commands.go +++ b/core/corehttp/commands.go @@ -162,10 +162,10 @@ func CheckVersionOption() ServeOption { pth := path.SplitList(cmdqry) // backwards compatibility to previous version check - if pth[1] != "version" { + if len(pth) >= 2 && pth[1] != "version" { clientVersion := r.UserAgent() // skips check if client is not go-ipfs - if clientVersion != "" && strings.Contains(clientVersion, "/go-ipfs/") && daemonVersion != clientVersion { + if strings.Contains(clientVersion, "/go-ipfs/") && daemonVersion != clientVersion { http.Error(w, fmt.Sprintf("%s (%s != %s)", errAPIVersionMismatch, daemonVersion, clientVersion), http.StatusBadRequest) return } diff --git a/core/corehttp/gateway_handler.go b/core/corehttp/gateway_handler.go index de03f1a2bbc..9f1e8ff12b8 100644 --- a/core/corehttp/gateway_handler.go +++ b/core/corehttp/gateway_handler.go @@ -132,7 +132,6 @@ func (i *gatewayHandler) optionsHandler(w http.ResponseWriter, r *http.Request) } func (i *gatewayHandler) getOrHeadHandler(ctx context.Context, w http.ResponseWriter, r *http.Request) { - urlPath := r.URL.Path escapedURLPath := r.URL.EscapedPath() @@ -140,8 +139,7 @@ func (i *gatewayHandler) getOrHeadHandler(ctx context.Context, w http.ResponseWr // the prefix header can be set to signal this sub-path. // It will be prepended to links in directory listings and the index.html redirect. prefix := "" - if prefixHdr := r.Header["X-Ipfs-Gateway-Prefix"]; len(prefixHdr) > 0 { - prfx := prefixHdr[0] + if prfx := r.Header.Get("X-Ipfs-Gateway-Prefix"); len(prfx) > 0 { for _, p := range i.config.PathPrefixes { if prfx == p || strings.HasPrefix(prfx, p+"/") { prefix = prfx @@ -157,8 +155,8 @@ func (i *gatewayHandler) getOrHeadHandler(ctx context.Context, w http.ResponseWr // the redirects and links would end up as http://example.net/ipns/example.net originalUrlPath := prefix + urlPath ipnsHostname := false - if hdr := r.Header["X-Ipns-Original-Path"]; len(hdr) > 0 { - originalUrlPath = prefix + hdr[0] + if hdr := r.Header.Get("X-Ipns-Original-Path"); len(hdr) > 0 { + originalUrlPath = prefix + hdr ipnsHostname = true } @@ -170,15 +168,10 @@ func (i *gatewayHandler) getOrHeadHandler(ctx context.Context, w http.ResponseWr // Resolve path to the final DAG node for the ETag resolvedPath, err := i.api.ResolvePath(ctx, parsedPath) - switch err { - case nil: - case coreiface.ErrOffline: - if !i.node.OnlineMode() { - webError(w, "ipfs resolve -r "+escapedURLPath, err, http.StatusServiceUnavailable) - return - } - fallthrough - default: + if err == coreiface.ErrOffline && !i.node.OnlineMode() { + webError(w, "ipfs resolve -r "+escapedURLPath, err, http.StatusServiceUnavailable) + return + } else if err != nil { webError(w, "ipfs resolve -r "+escapedURLPath, err, http.StatusNotFound) return } diff --git a/core/corehttp/ipns_hostname.go b/core/corehttp/ipns_hostname.go index 265feef804a..7bce62ad3ab 100644 --- a/core/corehttp/ipns_hostname.go +++ b/core/corehttp/ipns_hostname.go @@ -26,7 +26,7 @@ func IPNSHostnameOption() ServeOption { if len(host) > 0 && isd.IsDomain(host) { name := "/ipns/" + host if _, err := n.Namesys.Resolve(ctx, name, nsopts.Depth(1)); err == nil { - r.Header["X-Ipns-Original-Path"] = []string{r.URL.Path} + r.Header.Set("X-Ipns-Original-Path", r.URL.Path) r.URL.Path = name + r.URL.Path } }