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/ioutil"
|
||||
"net/http"
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// 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
|
||||
// therefore useless.
|
||||
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))
|
||||
if err != nil {
|
||||
// We do not want to log the username/password in the errors.
|
||||
re := regexp.MustCompile(`http://\w+:\w+`)
|
||||
errString := re.ReplaceAllString(fmt.Sprintf("%v", err), "")
|
||||
err = fmt.Errorf(errString)
|
||||
replaceStr := "<username>:<password>"
|
||||
str := strings.Replace(err.Error(), credentials, replaceStr, -1)
|
||||
err = fmt.Errorf("%v", str)
|
||||
}
|
||||
return resp, err
|
||||
}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
|
||||
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 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 IsValidIdType 100.00% (3/3)
|
||||
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 --------------- 90.58% (375/414)
|
||||
github.com/conformal/btcjson --------------- 90.60% (376/415)
|
||||
|
||||
|
|
Loading…
Reference in a new issue