I2P Address: [http://git.idk.i2p]

Skip to content
Snippets Groups Projects
Unverified Commit d467dc28 authored by zzz's avatar zzz
Browse files

I2CP: Only send one notification to each session listener

for reportAbuse(), disconnected(), and errorOccurred(),
because a single listener may be registered for multiple ports/protocols
parent 8ac78af2
No related branches found
No related tags found
No related merge requests found
package net.i2p.client.impl; package net.i2p.client.impl;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.Collection;
import java.util.HashSet;
import java.util.Map; import java.util.Map;
import net.i2p.I2PAppContext; import net.i2p.I2PAppContext;
...@@ -59,13 +61,21 @@ public class I2PSessionDemultiplexer implements I2PSessionMuxedListener { ...@@ -59,13 +61,21 @@ public class I2PSessionDemultiplexer implements I2PSessionMuxedListener {
} }
public void reportAbuse(I2PSession session, int severity) { public void reportAbuse(I2PSession session, int severity) {
for (I2PSessionMuxedListener l : _listeners.values()) { Collection<I2PSessionMuxedListener> lsnrs = _listeners.values();
// dedup
if (lsnrs.size() > 1)
lsnrs = new HashSet<I2PSessionMuxedListener>(lsnrs);
for (I2PSessionMuxedListener l : lsnrs) {
l.reportAbuse(session, severity); l.reportAbuse(session, severity);
} }
} }
public void disconnected(I2PSession session) { public void disconnected(I2PSession session) {
for (I2PSessionMuxedListener l : _listeners.values()) { Collection<I2PSessionMuxedListener> lsnrs = _listeners.values();
// dedup
if (lsnrs.size() > 1)
lsnrs = new HashSet<I2PSessionMuxedListener>(lsnrs);
for (I2PSessionMuxedListener l : lsnrs) {
if (_log.shouldInfo()) if (_log.shouldInfo())
_log.info("Sending disconnected() to " + l); _log.info("Sending disconnected() to " + l);
l.disconnected(session); l.disconnected(session);
...@@ -73,7 +83,11 @@ public class I2PSessionDemultiplexer implements I2PSessionMuxedListener { ...@@ -73,7 +83,11 @@ public class I2PSessionDemultiplexer implements I2PSessionMuxedListener {
} }
public void errorOccurred(I2PSession session, String message, Throwable error) { public void errorOccurred(I2PSession session, String message, Throwable error) {
for (I2PSessionMuxedListener l : _listeners.values()) { Collection<I2PSessionMuxedListener> lsnrs = _listeners.values();
// dedup
if (lsnrs.size() > 1)
lsnrs = new HashSet<I2PSessionMuxedListener>(lsnrs);
for (I2PSessionMuxedListener l : lsnrs) {
if (_log.shouldInfo()) if (_log.shouldInfo())
_log.info("Sending errorOccurred() \"" + message + "\" to " + l); _log.info("Sending errorOccurred() \"" + message + "\" to " + l);
l.errorOccurred(session, message, error); l.errorOccurred(session, message, error);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment