oracle: send user-agent header with our requests, fix #1923

This commit is contained in:
Roman Khimov 2021-05-07 16:36:16 +03:00
parent bde4e6a91f
commit 3402a3ec30
3 changed files with 11 additions and 4 deletions

View file

@ -327,8 +327,8 @@ type (
)
// Get implements oracle.HTTPClient interface.
func (c *httpClient) Get(url string) (*http.Response, error) {
resp, ok := c.responses[url]
func (c *httpClient) Do(req *http.Request) (*http.Response, error) {
resp, ok := c.responses[req.URL.String()]
if ok {
return &http.Response{
StatusCode: resp.code,

View file

@ -66,7 +66,7 @@ type (
// HTTPClient is an interface capable of doing oracle requests.
HTTPClient interface {
Get(string) (*http.Response, error)
Do(*http.Request) (*http.Response, error)
}
// Broadcaster broadcasts oracle responses.

View file

@ -111,7 +111,14 @@ func (o *Oracle) processRequest(priv *keys.PrivateKey, req request) error {
break
}
}
r, err := o.Client.Get(req.Req.URL)
httpReq, err := http.NewRequest("GET", req.Req.URL, nil)
if err != nil {
o.Log.Warn("failed to create http request", zap.String("url", req.Req.URL), zap.Error(err))
resp.Code = transaction.Error
break
}
httpReq.Header.Set("User-Agent", "NeoOracleService/3.0")
r, err := o.Client.Do(httpReq)
if err != nil {
o.Log.Warn("oracle request failed", zap.String("url", req.Req.URL), zap.Error(err))
resp.Code = transaction.Error