Skip to content

Commit 854a05a

Browse files
fix(payments/generic): EN-392 fixes nil deref if no http resp (#1965)
1 parent 6670cfe commit 854a05a

File tree

5 files changed

+11
-6
lines changed

5 files changed

+11
-6
lines changed

components/payments/cmd/connectors/internal/connectors/generic/client/errors.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,16 @@ import (
77
)
88

99
var (
10-
ErrStatusCodeClientError = errors.New("client error")
11-
ErrStatusCodeServerError = errors.New("server error")
10+
ErrStatusCodeClientError = errors.New("client error")
11+
ErrStatusCodeServerError = errors.New("server error")
12+
ErrUnreachableServerError = errors.New("unreachable server")
1213
)
1314

1415
func wrapError(err error, resp *http.Response) error {
16+
if resp == nil {
17+
return fmt.Errorf("%w: %w", err, ErrUnreachableServerError)
18+
}
19+
1520
statusCode := resp.StatusCode
1621

1722
if statusCode >= http.StatusBadRequest && statusCode < http.StatusInternalServerError {

components/payments/cmd/connectors/internal/connectors/generic/task_fetch_accounts.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func ingestAccounts(
7272
for page := 1; ; page++ {
7373
accounts, err := c.ListAccounts(ctx, int64(page), pageSize)
7474
if err != nil {
75-
if errors.Is(err, client.ErrStatusCodeServerError) {
75+
if errors.Is(err, client.ErrStatusCodeServerError) || errors.Is(err, client.ErrUnreachableServerError) {
7676
return fmt.Errorf("%w: %w", task.ErrRetryable, err)
7777
}
7878
return err

components/payments/cmd/connectors/internal/connectors/generic/task_fetch_balances.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func taskFetchBalances(c *client.Client, config *Config, accountID string) task.
3838
// retryable error already handled by the client
3939
otel.RecordError(span, err)
4040

41-
if errors.Is(err, client.ErrStatusCodeServerError) {
41+
if errors.Is(err, client.ErrStatusCodeServerError) || errors.Is(err, client.ErrUnreachableServerError) {
4242
return fmt.Errorf("%w: %w", task.ErrRetryable, err)
4343
}
4444

components/payments/cmd/connectors/internal/connectors/generic/task_fetch_beneficiaries.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func ingestBeneficiaries(
6767
for page := 1; ; page++ {
6868
beneficiaries, err := c.ListBeneficiaries(ctx, int64(page), pageSize, state.LastCreatedAt)
6969
if err != nil {
70-
if errors.Is(err, client.ErrStatusCodeServerError) {
70+
if errors.Is(err, client.ErrStatusCodeServerError) || errors.Is(err, client.ErrUnreachableServerError) {
7171
return fetchBeneficiariesState{}, fmt.Errorf("%w: %w", task.ErrRetryable, err)
7272
}
7373

components/payments/cmd/connectors/internal/connectors/generic/task_fetch_transactions.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func ingestTransactions(
7272
for page := 1; ; page++ {
7373
transactions, err := c.ListTransactions(ctx, int64(page), pageSize, state.LastUpdatedAt)
7474
if err != nil {
75-
if errors.Is(err, client.ErrStatusCodeServerError) {
75+
if errors.Is(err, client.ErrStatusCodeServerError) || errors.Is(err, client.ErrUnreachableServerError) {
7676
return fetchTransactionsState{}, fmt.Errorf("%w: %w", task.ErrRetryable, err)
7777
}
7878

0 commit comments

Comments
 (0)