Skip to content

Commit 30608f7

Browse files
committed
feat: allow overriding default request timeouts
1 parent 278bc91 commit 30608f7

File tree

5 files changed

+36
-1
lines changed

5 files changed

+36
-1
lines changed

LavalinkServer/application.yml.example

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@ lavalink:
6464
#proxyPort: 3128 # Proxy port, 3128 is the default for squidProxy
6565
#proxyUser: "" # Optional user for basic authentication fields, leave blank if you don't use basic auth
6666
#proxyPassword: "" # Password for basic authentication
67+
timeouts:
68+
connectTimeoutMs: 3000
69+
connectionRequestTimeoutMs: 3000
70+
socketTimeoutMs: 3000
6771

6872
metrics:
6973
prometheus:

LavalinkServer/src/main/java/lavalink/server/config/AudioPlayerConfiguration.kt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import com.sedmelluq.discord.lavaplayer.source.soundcloud.*
1414
import com.sedmelluq.discord.lavaplayer.source.twitch.TwitchStreamAudioSourceManager
1515
import com.sedmelluq.discord.lavaplayer.source.vimeo.VimeoAudioSourceManager
1616
import com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager
17+
import com.sedmelluq.discord.lavaplayer.tools.io.HttpClientTools
1718
import com.sedmelluq.discord.lavaplayer.track.playback.NonAllocatingAudioFrameBuffer
1819
import com.sedmelluq.lava.extensions.youtuberotator.YoutubeIpRotatorSetup
1920
import com.sedmelluq.lava.extensions.youtuberotator.planner.*
@@ -24,6 +25,8 @@ import org.apache.http.HttpHost
2425
import org.apache.http.auth.AuthScope
2526
import org.apache.http.auth.UsernamePasswordCredentials
2627
import org.apache.http.client.CredentialsProvider
28+
import org.apache.http.client.config.CookieSpecs
29+
import org.apache.http.client.config.RequestConfig
2730
import org.apache.http.impl.client.BasicCredentialsProvider
2831
import org.slf4j.LoggerFactory
2932
import org.springframework.context.annotation.Bean
@@ -50,6 +53,26 @@ class AudioPlayerConfiguration {
5053
audioPlayerManagerConfigurations: Collection<AudioPlayerManagerConfiguration>,
5154
mediaContainerProbes: Collection<MediaContainerProbe>
5255
): AudioPlayerManager {
56+
serverConfig.timeouts?.let {
57+
HttpClientTools.setDefaultRequestConfig(
58+
RequestConfig.custom()
59+
.setConnectTimeout(3000)
60+
.setConnectionRequestTimeout(3000)
61+
.setSocketTimeout(3000)
62+
.setCookieSpec(CookieSpecs.STANDARD)
63+
.build()
64+
)
65+
66+
HttpClientTools.setNoCookiesRequestConfig(
67+
RequestConfig.custom()
68+
.setConnectTimeout(3000)
69+
.setConnectionRequestTimeout(3000)
70+
.setSocketTimeout(3000)
71+
.setCookieSpec(CookieSpecs.IGNORE_COOKIES)
72+
.build()
73+
)
74+
}
75+
5376
val audioPlayerManager = DefaultAudioPlayerManager()
5477

5578
if (serverConfig.isGcWarnings) {

LavalinkServer/src/main/java/lavalink/server/config/ServerConfig.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,11 @@ class ServerConfig {
4646
var youtubeConfig: YoutubeConfig? = null
4747
var httpConfig: HttpConfig? = null
4848
var filters: Map<String, Boolean> = mapOf()
49+
var timeouts: TimeoutsConfig? = null
50+
}
51+
52+
class TimeoutsConfig {
53+
var connectTimeoutMs: Int = 3000
54+
var connectionRequestTimeoutMs: Int = 3000
55+
var socketTimeoutMs: Int = 3000
4956
}

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ allprojects {
2626
mavenLocal() // useful for developing
2727
maven("https://m2.dv8tion.net/releases")
2828
maven("https://maven.lavalink.dev/releases")
29+
maven("https://maven.lavalink.dev/snapshots")
2930
jcenter()
3031
maven("https://jitpack.io") // build projects directly from GitHub
3132
}

settings.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ fun VersionCatalogBuilder.spring() {
3434
}
3535

3636
fun VersionCatalogBuilder.voice() {
37-
version("lavaplayer", "2.2.2")
37+
version("lavaplayer", "a099a98b55e33c1694b2e2636ecd1c3a33769707-SNAPSHOT")
3838
version("koe", "2.0.3-rc2")
3939

4040
library("lavaplayer", "dev.arbjerg", "lavaplayer").versionRef("lavaplayer")

0 commit comments

Comments
 (0)