rsocket-java icon indicating copy to clipboard operation
rsocket-java copied to clipboard

client receive error when using socks5 proxy

Open wxq1990 opened this issue 3 years ago • 1 comments
trafficstars

 var tcpClient = TcpClient.create()
                .host(serverHost)
                .port(serverPort);
        var proxyHost = rSocketClientProps.getProxyHost();
        var proxyPort = rSocketClientProps.getProxyPort();
        if (StringUtils.hasText(proxyHost)) {
            tcpClient=tcpClient.proxy(p -> p.type(ProxyProvider.Proxy.SOCKS5)
                        .host(proxyHost)
                        .port(proxyPort));
        }
        log.info("[RSocketClient] connecting {}:{}", serverHost, serverPort);
        RSocketConnector.create()
                .acceptor(new RSocketClientAcceptor(this, SpringUtil.getBean(RSocketClientHandler.class)))
               // .resume(resume)
                .connect(TcpClientTransport.create(tcpClient))
                .doOnError(e -> log.error("[RSocketClient] connect error", e))
                .doOnSuccess(s -> {
                    setClient(s);
                    publisher.publishEvent(new ControlConnected(this));
                    log.info("[RSocketClient] connected {}:{}", serverHost, serverPort);
                })
                .doFinally(s -> log.info("[RSocketClient] connect doFinally {}", s))
                .subscribe();

Error Log

2022-03-04 15:58:36.172 ERROR 4740 --- [actor-tcp-nio-1] c.p.c.a.r.client.RSocketClientAcceptor : [RSocketClient] sendingSocket doOnError

io.rsocket.exceptions.InvalidSetupException: SETUP or RESUME frame must be received before any others at io.rsocket.exceptions.Exceptions.from(Exceptions.java:58) ~[rsocket-core-1.1.1.jar:na] at io.rsocket.core.RSocketRequester.lambda$tryTerminateOnZeroError$4(RSocketRequester.java:313) ~[rsocket-core-1.1.1.jar:na] at io.rsocket.core.RSocketRequester.tryTerminate(RSocketRequester.java:318) ~[rsocket-core-1.1.1.jar:na] at io.rsocket.core.RSocketRequester.tryTerminateOnZeroError(RSocketRequester.java:313) ~[rsocket-core-1.1.1.jar:na] at io.rsocket.core.RSocketRequester.handleStreamZero(RSocketRequester.java:224) ~[rsocket-core-1.1.1.jar:na] at io.rsocket.core.RSocketRequester.handleIncomingFrames(RSocketRequester.java:209) ~[rsocket-core-1.1.1.jar:na] at reactor.core.publisher.LambdaSubscriber.onNext(LambdaSubscriber.java:160) ~[reactor-core-3.4.14.jar:3.4.14] at io.rsocket.core.ClientServerInputMultiplexer$InternalDuplexConnection.onNext(ClientServerInputMultiplexer.java:248) ~[rsocket-core-1.1.1.jar:na] at io.rsocket.core.ClientServerInputMultiplexer.onNext(ClientServerInputMultiplexer.java:129) ~[rsocket-core-1.1.1.jar:na] at io.rsocket.core.ClientServerInputMultiplexer.onNext(ClientServerInputMultiplexer.java:48) ~[rsocket-core-1.1.1.jar:na] at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:120) ~[reactor-core-3.4.14.jar:3.4.14] at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:120) ~[reactor-core-3.4.14.jar:3.4.14] at reactor.netty.channel.FluxReceive.onInboundNext(FluxReceive.java:364) ~[reactor-netty-core-1.0.15.jar:1.0.15] at reactor.netty.channel.ChannelOperations.onInboundNext(ChannelOperations.java:404) ~[reactor-netty-core-1.0.15.jar:1.0.15] at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:93) ~[reactor-netty-core-1.0.15.jar:1.0.15] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final] at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327) ~[netty-codec-4.1.73.Final.jar:4.1.73.Final] at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:299) ~[netty-codec-4.1.73.Final.jar:4.1.73.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final] at io.netty.handler.proxy.ProxyHandler.channelRead(ProxyHandler.java:252) ~[netty-handler-proxy-4.1.73.Final.jar:4.1.73.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final] at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final] at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:722) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:658) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:584) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) ~[netty-common-4.1.73.Final.jar:4.1.73.Final] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.73.Final.jar:4.1.73.Final] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.73.Final.jar:4.1.73.Final] at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]

Your Environment

  • RSocket version(s) used: 1.1.1
  • Other relevant libraries versions (eg. netty, ...): io.rsocket:rsocket-transport-netty:1.1.1
  • Platform (eg. JVM version (javar -version) or Node version (node --version)): java17
  • OS and version (eg uname -a): win10

wxq1990 avatar Mar 04 '22 08:03 wxq1990

I found another problem, when using a socks proxy and setting resume, although it is not connected to the remote RSocket server, the client shows that the connection is successful(doOnSuccess is called)

wxq1990 avatar Jun 16 '22 10:06 wxq1990