Skip to content

[BUG] NetworkHttpClient RequestConfig overridden in makeRequest method #913

@natasa-radenovic

Description

@natasa-radenovic

Describe the bug

The Twilio SDK allows its users to set different RequestConfig by including code like:

    RequestConfig config =
        RequestConfig.custom()
            .setConnectionRequestTimeout(Timeout.ofMilliseconds(connectionRequestTimeout))
            .setResponseTimeout(Timeout.ofMilliseconds(responseTimeout))
            .setConnectionKeepAlive(Timeout.ofMilliseconds(connectionKeepAlive))
            .build();
    NetworkHttpClient httpClient = new NetworkHttpClient(config);
    TwilioRestClient client =
        new TwilioRestClient.Builder(accountSid, authToken).httpClient(httpClient).build();
    Twilio.setRestClient(client);

However, this gets overriden by the request later in
https://github.com/twilio/twilio-java/blob/main/src/main/java/com/twilio/http/NetworkHttpClient.java#L136
So it doesn't allow users to set their own timeouts.

This makes the previous RequestConfig pointless. It would be better to remove the code snippet that sets the RequestConfig for the HttpUriRequestBase in

public Response makeRequest(final Request request)  {
...
}

Code snippet

https://github.com/twilio/twilio-java/blob/main/src/main/java/com/twilio/http/NetworkHttpClient.java#L136
httpUriRequestBase.setConfig(DEFAULT_REQUEST_CONFIG);

Actual behavior

RequestConfig set on NetworkHttpClient gets overriden by the request later in
https://github.com/twilio/twilio-java/blob/main/src/main/java/com/twilio/http/NetworkHttpClient.java#L136
So it doesn't allow users to set their own timeouts.

Expected behavior

Remove the code snippet that sets the RequestConfig for the HttpUriRequestBase in

public Response makeRequest(final Request request)  {
...
}

so users can use their own RequestConfig

twilio-java version

11.0.1

Java version

21.0.1-amzn

Logs or error messages

No response

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    type: bugbug in the library

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions