Paul Thompson created HTTPCORE-517:
--------------------------------------
Summary: Allow SecurityManager to stop socket connections
Key: HTTPCORE-517
URL: https://issues.apache.org/jira/browse/HTTPCORE-517
Project: HttpComponents HttpCore
Issue Type: Improvement
Reporter: Paul Thompson
Utilising a java security manager you're able to block certain socket
connections from taking place. This can be useful to block outgoing connections
for all components.
{code:java}
@Override
public void checkConnect(String host, int port) {
if(port != -1) {
for (String bannedPerm : bannedSocketPerms) {
if (host.equalsIgnoreCase(bannedPerm)) {
throw new new SecurityException();
}
}
}
}{code}
Unfortunately when doing this, the apache reactor shuts down. The call site is
in the {{DefaultConnectingIOReactor}}.
{code:java}
final boolean connected = socketChannel.connect(request.getRemoteAddress());
{code}
this line is wrapped in a try/catch that catches an {{IOException}}. This means
the {{SecurityException}} is propagated out, and is never offered to be caught
(even with the {{ExceptionHandler}} that you can set.
It would be an improvement to be able to throw these types of exceptions and
have the reactor continue on. It's very understandable for the
{{SecurityException}} to be a transient error and as such shouldn't shut down
the entire reactor by default.
Either that, or one should be able to define a {{handleRuntimeException}} (as
seen in the {{BaseIOREactor}}) in such a way that it would get the option to
handle the exceptions that are thrown as part of the {{processEvents}} call in
the {{AbstractIOReactor}}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]