-
Bug
-
Resolution: Obsolete
-
Major
-
jboss-fuse-6.3
-
None
-
False
-
False
-
%
-
-
Todo
-
Undefined
-
A number of Camel components, or libraries referenced by Camel components, use Apache Mina for SSL. Mina supports SOCKS4, and this problem only arises when using a SOCKS4 proxy.
SOCKS4 does not support authentication, but the client can supply a username. This is not mandatory, but the Mina SOCKS4 implementation tries to process the username, which leads to the following NPE:
2021-06-02 14:17:38,229 | ERROR | ioProcessor-1019 | AbstractProxyLogicHandler | 158 - org.apache.mina.core - 2.0.13 | Unable to send Socks request: java.lang.NullPointerException at org.apache.mina.proxy.handlers.socks.Socks4LogicHandler.writeRequest(Socks4LogicHandler.java:72)[158:org.apache.mina.core:2.0.13] at org.apache.mina.proxy.handlers.socks.Socks4LogicHandler.doHandshake(Socks4LogicHandler.java:59)[158:org.apache.mina.core:2.0.13] at org.apache.mina.proxy.filter.ProxyFilter.sessionCreated(ProxyFilter.java:291)[158:org.apache.mina.core:2.0.13] at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextSessionCreated(DefaultIoFilterChain.java:459)[158:org.apache.mina.core:2.0.13] at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$700(DefaultIoFilterChain.java:48)[158:org.apache.mina.core:2.0.13] at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.sessionCreated(DefaultIoFilterChain.java:913)[158:org.apache.mina.core:2.0.13] at org.apache.mina.core.filterchain.IoFilterAdapter.sessionCreated(IoFilterAdapter.java:74)[158:org.apache.mina.core:2.0.13] at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextSessionCreated(DefaultIoFilterChain.java:459)[158:org.apache.mina.core:2.0.13] at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireSessionCreated(DefaultIoFilterChain.java:452)[158:org.apache.mina.core:2.0.13] at org.apache.mina.core.service.IoServiceListenerSupport.fireSessionCreated(IoServiceListenerSupport.java:212)[158:org.apache.mina.core:2.0.13] at org.apache.mina.core.polling.AbstractPollingIoProcessor.addNow(AbstractPollingIoProcessor.java:510)[158:org.apache.mina.core:2.0.13] at org.apache.mina.core.polling.AbstractPollingIoProcessor.handleNewSessions(AbstractPollingIoProcessor.java:479)[158:org.apache.mina.core:2.0.13] at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$400(AbstractPollingIoProcessor.java:68)[158:org.apache.mina.core:2.0.13] at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1088)[158:org.apache.mina.core:2.0.13] at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)[158:org.apache.mina.core:2.0.13] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1160)[:1.8.0] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)[:1.8.0] at java.lang.Thread.run(Thread.java:818)[:2.9 (08-02-2019)]
The relevant implementation is here:
Note that it assumes a non-null value of `username`, but the caller is under no obligation to supply one.
This problem was raised on Fuse 6.3, but Fuse 7 also supplies Mina, and those Camel components that use Mina will (I imagine) continue to use it. Later versions of Mina have the same limitaiton.