Optimize and improve credential stripping code.
Since we already have the specific username and password we want to strip from errors, use a specific search string rather than a generic regular expression. This is quite a bit more efficient than using regular expressions and also has the benefit of being more accurate. Also, rather than using the added overhead of fmt to convert the error to a string, just call Error() directly on it to get the string. Finally, instead of just stripping it, replace it with the literal string "<username>:<password>" to avoid any possible confusion in the error messages where it might otherwise appear the url was being constructed incorrectly. ok jcv@
This commit is contained in:
parent
2a475d7299
commit
10542e0573
2 changed files with 8 additions and 7 deletions
11
jsonfxns.go
11
jsonfxns.go
|
@ -11,7 +11,7 @@ import (
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"regexp"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// MarshallAndSend takes the reply structure, marshalls it to json, and
|
// MarshallAndSend takes the reply structure, marshalls it to json, and
|
||||||
|
@ -33,13 +33,14 @@ func MarshallAndSend(rawReply Reply, w io.Writer) (string, error) {
|
||||||
// than net/rpc/jsonrpc since that one doesn't support http connections and is
|
// than net/rpc/jsonrpc since that one doesn't support http connections and is
|
||||||
// therefore useless.
|
// therefore useless.
|
||||||
func jsonRpcSend(user string, password string, server string, message []byte) (*http.Response, error) {
|
func jsonRpcSend(user string, password string, server string, message []byte) (*http.Response, error) {
|
||||||
resp, err := http.Post("http://"+user+":"+password+"@"+server,
|
credentials := user + ":" + password
|
||||||
|
resp, err := http.Post("http://"+credentials+"@"+server,
|
||||||
"application/json", bytes.NewBuffer(message))
|
"application/json", bytes.NewBuffer(message))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// We do not want to log the username/password in the errors.
|
// We do not want to log the username/password in the errors.
|
||||||
re := regexp.MustCompile(`http://\w+:\w+`)
|
replaceStr := "<username>:<password>"
|
||||||
errString := re.ReplaceAllString(fmt.Sprintf("%v", err), "")
|
str := strings.Replace(err.Error(), credentials, replaceStr, -1)
|
||||||
err = fmt.Errorf(errString)
|
err = fmt.Errorf("%v", str)
|
||||||
}
|
}
|
||||||
return resp, err
|
return resp, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
|
|
||||||
github.com/conformal/btcjson/jsonapi.go CreateMessage 100.00% (310/310)
|
github.com/conformal/btcjson/jsonapi.go CreateMessage 100.00% (310/310)
|
||||||
|
github.com/conformal/btcjson/jsonfxns.go jsonRpcSend 100.00% (7/7)
|
||||||
github.com/conformal/btcjson/jsonfxns.go MarshallAndSend 100.00% (7/7)
|
github.com/conformal/btcjson/jsonfxns.go MarshallAndSend 100.00% (7/7)
|
||||||
github.com/conformal/btcjson/jsonfxns.go GetRaw 100.00% (6/6)
|
github.com/conformal/btcjson/jsonfxns.go GetRaw 100.00% (6/6)
|
||||||
github.com/conformal/btcjson/jsonfxns.go jsonRpcSend 100.00% (6/6)
|
|
||||||
github.com/conformal/btcjson/jsonapi.go jsonWithArgs 100.00% (5/5)
|
github.com/conformal/btcjson/jsonapi.go jsonWithArgs 100.00% (5/5)
|
||||||
github.com/conformal/btcjson/jsonapi.go IsValidIdType 100.00% (3/3)
|
github.com/conformal/btcjson/jsonapi.go IsValidIdType 100.00% (3/3)
|
||||||
github.com/conformal/btcjson/jsonapi.go RpcCommand 66.67% (18/27)
|
github.com/conformal/btcjson/jsonapi.go RpcCommand 66.67% (18/27)
|
||||||
github.com/conformal/btcjson/jsonapi.go readResultCmd 40.00% (20/50)
|
github.com/conformal/btcjson/jsonapi.go readResultCmd 40.00% (20/50)
|
||||||
github.com/conformal/btcjson --------------- 90.58% (375/414)
|
github.com/conformal/btcjson --------------- 90.60% (376/415)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue