From cf60fdd3d9e266dd56d1fb45bfab4fd5b50a6136 Mon Sep 17 00:00:00 2001
From: Matt Bell <mappum@gmail.com>
Date: Mon, 27 Oct 2014 17:01:00 -0700
Subject: [PATCH] cmd/ipfs: Load API address from config

---
 cmd/ipfs/daemon.go | 29 +++++++++++++++++++++++++++--
 1 file changed, 27 insertions(+), 2 deletions(-)

diff --git a/cmd/ipfs/daemon.go b/cmd/ipfs/daemon.go
index 1ece04048..79a4b4df3 100644
--- a/cmd/ipfs/daemon.go
+++ b/cmd/ipfs/daemon.go
@@ -5,6 +5,8 @@ import (
 	"net/http"
 
 	"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/camlistore/lock"
+	ma "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
+	manet "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr/net"
 
 	cmds "github.com/jbenet/go-ipfs/commands"
 	cmdsHttp "github.com/jbenet/go-ipfs/commands/http"
@@ -41,10 +43,33 @@ func daemonFunc(req cmds.Request, res cmds.Response) {
 	}
 	defer lk.Close()
 
+	configFile, err := config.Filename(configPath)
+	if err != nil {
+		res.SetError(err, cmds.ErrNormal)
+		return
+	}
+
+	config, err := config.Load(configFile)
+	if err != nil {
+		res.SetError(err, cmds.ErrNormal)
+		return
+	}
+
+	addr, err := ma.NewMultiaddr(config.Addresses.API)
+	if err != nil {
+		res.SetError(err, cmds.ErrNormal)
+		return
+	}
+
+	_, host, err := manet.DialArgs(addr)
+	if err != nil {
+		res.SetError(err, cmds.ErrNormal)
+		return
+	}
+
 	handler := cmdsHttp.Handler{}
 	http.Handle(cmdsHttp.ApiPath+"/", handler)
-	// TODO: load listen address/port from config/options
-	err = http.ListenAndServe(":8080", nil)
+	err = http.ListenAndServe(host, nil)
 	if err != nil {
 		res.SetError(err, cmds.ErrNormal)
 		return
-- 
GitLab