Skip to content

Commit ae2cb1b

Browse files
authored
Fix SetRequestCallbacks/SetResponseCallbacks (hashicorp#242)
1 parent fd98162 commit ae2cb1b

File tree

5 files changed

+20
-10
lines changed

5 files changed

+20
-10
lines changed

client.go

+4-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

client_test.go

+7
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package vault
55

66
import (
77
"fmt"
8+
"net/http"
89
"testing"
910
"time"
1011

@@ -27,6 +28,12 @@ func Test_Client_Clone(t *testing.T) {
2728

2829
require.NoError(t, client.SetToken("test-token"))
2930
require.NoError(t, client.SetNamespace("test-namespace"))
31+
require.NoError(t, client.SetRequestCallbacks(func(req *http.Request) {
32+
t.Log(req)
33+
}))
34+
require.NoError(t, client.SetResponseCallbacks(func(req *http.Request, resp *http.Response) {
35+
t.Log(req, resp)
36+
}))
3037

3138
clone := client.Clone()
3239

generate/templates/client.handlebars

+4-3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"net"
88
"net/http"
99
"net/url"
10+
"slices"
1011
"strings"
1112
"sync"
1213

@@ -180,8 +181,8 @@ func (c *Client) cloneClientRequestModifiers() requestModifiers {
180181

181182
var clone requestModifiers
182183

183-
copy(clone.requestCallbacks, c.clientRequestModifiers.requestCallbacks)
184-
copy(clone.responseCallbacks, c.clientRequestModifiers.responseCallbacks)
184+
clone.requestCallbacks = slices.Clone(c.clientRequestModifiers.requestCallbacks)
185+
clone.responseCallbacks = slices.Clone(c.clientRequestModifiers.responseCallbacks)
185186

186187
clone.headers = requestHeaders{
187188
userAgent: c.clientRequestModifiers.headers.userAgent,
@@ -192,7 +193,7 @@ func (c *Client) cloneClientRequestModifiers() requestModifiers {
192193
customHeaders: c.clientRequestModifiers.headers.customHeaders.Clone(),
193194
}
194195

195-
copy(clone.headers.mfaCredentials, c.clientRequestModifiers.headers.mfaCredentials)
196+
clone.headers.mfaCredentials = slices.Clone(c.clientRequestModifiers.headers.mfaCredentials)
196197

197198
return clone
198199
}

replication_consistency.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"encoding/hex"
1111
"fmt"
1212
"net/http"
13+
"slices"
1314
"strconv"
1415
"strings"
1516
"sync"
@@ -228,8 +229,7 @@ func (c *replicationStateCache) clone() replicationStateCache {
228229
/* */ c.statesLock.RLock()
229230
defer c.statesLock.RUnlock()
230231

231-
var cloned []string
232-
copy(cloned, c.states)
232+
cloned := slices.Clone(c.states)
233233

234234
return replicationStateCache{
235235
statesLock: sync.RWMutex{},

request_modifiers.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"maps"
99
"net/http"
1010
"net/url"
11+
"slices"
1112
"strings"
1213
"time"
1314
"unicode"
@@ -172,7 +173,7 @@ func (c *Client) ClearCustomHeaders() {
172173
// SetRequestCallbacks sets callbacks which will be invoked before each request.
173174
func (c *Client) SetRequestCallbacks(callbacks ...RequestCallback) error {
174175
c.clientRequestModifiersLock.Lock()
175-
copy(c.clientRequestModifiers.requestCallbacks, callbacks)
176+
c.clientRequestModifiers.requestCallbacks = slices.Clone(callbacks)
176177
c.clientRequestModifiersLock.Unlock()
177178

178179
return nil
@@ -189,7 +190,7 @@ func (c *Client) ClearRequestCallbacks() {
189190
// successful response.
190191
func (c *Client) SetResponseCallbacks(callbacks ...ResponseCallback) error {
191192
c.clientRequestModifiersLock.Lock()
192-
copy(c.clientRequestModifiers.responseCallbacks, callbacks)
193+
c.clientRequestModifiers.responseCallbacks = slices.Clone(callbacks)
193194
c.clientRequestModifiersLock.Unlock()
194195

195196
return nil

0 commit comments

Comments
 (0)