Skip to content

Commit 9e8e4b3

Browse files
committed
fix: avoid bind exception when reconnecting after failure
Signed-off-by: Andre Dietisheim <adietish@redhat.com>
1 parent 98be0a6 commit 9e8e4b3

2 files changed

Lines changed: 33 additions & 1 deletion

File tree

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.redhat.devtools.gateway
2+
3+
import com.intellij.openapi.components.Service
4+
import com.intellij.openapi.components.service
5+
import com.intellij.openapi.diagnostic.logger
6+
7+
@Service(Service.Level.APP)
8+
class GatewayUrlHandlerService {
9+
10+
companion object {
11+
fun getInstance(): GatewayUrlHandlerService = service()
12+
}
13+
14+
init {
15+
logger<GatewayUrlHandlerService>().info("GatewayUrlHandlerService initialized")
16+
registerUrlHandler()
17+
}
18+
19+
private fun registerUrlHandler() {
20+
// Your URL handler registration logic
21+
logger<GatewayUrlHandlerService>().info("Registering jetbrains-gateway:// protocol handler")
22+
}
23+
24+
fun handleGatewayUrl(url: String) {
25+
logger<GatewayUrlHandlerService>().info("Handling Gateway URL: $url")
26+
// Your URL handling logic here
27+
}
28+
}

src/main/kotlin/com/redhat/devtools/gateway/openshift/Pods.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import java.io.IOException
3838
import java.io.InputStream
3939
import java.io.OutputStream
4040
import java.net.InetAddress
41+
import java.net.InetSocketAddress
4142
import java.net.ServerSocket
4243
import java.net.Socket
4344
import java.util.concurrent.TimeUnit
@@ -99,7 +100,10 @@ class Pods(private val client: ApiClient) {
99100
// https://github.com/kubernetes-client/java/blob/master/examples/examples-release-latest/src/main/java/io/kubernetes/client/examples/PortForwardExample.java
100101
@Throws(IOException::class)
101102
fun forward(pod: V1Pod, localPort: Int, remotePort: Int): Closeable {
102-
val serverSocket = ServerSocket(localPort, 50, InetAddress.getLoopbackAddress())
103+
val serverSocket = ServerSocket()
104+
serverSocket.use {
105+
it.bind(InetSocketAddress(InetAddress.getLoopbackAddress(), localPort))
106+
}
103107

104108
val scope = CoroutineScope(Dispatchers.IO)
105109
scope.launch {

0 commit comments

Comments
 (0)