diff --git a/source/dnetd/dconnection.d b/source/dnetd/dconnection.d index 3edd4e4..330d4fb 100644 --- a/source/dnetd/dconnection.d +++ b/source/dnetd/dconnection.d @@ -227,7 +227,7 @@ public class DConnection : Thread { if(connType == ConnectionType.SERVER) { - + server.getLinkManager().removeLinkInbounded(this); } } diff --git a/source/dnetd/dlink.d b/source/dnetd/dlink.d index 6c28445..7fa779c 100644 --- a/source/dnetd/dlink.d +++ b/source/dnetd/dlink.d @@ -223,7 +223,7 @@ public final class DLink : Thread this(server, name, address=null); /* Save connection */ - //this.connection = connection; + this.connection = connection; } public string getName() @@ -305,6 +305,38 @@ public final class DMeyer : Thread return linkGood; } + + + + /** + * Remove a link via DConnection (inbounded) + */ + public void removeLinkInbounded(DConnection connection) + { + linksMutex.lock(); + + DLink[] newList; + DLink removedLink; + foreach(DLink link; links) + { + if(link.connection != connection) + { + newList ~= link; + } + else + { + removedLink = link; + } + } + + links = newList; + + linksMutex.unlock(); + + gprintln("Removed inbounded peer from link manager "~to!(string)(removedLink)); + } + + public DLink[] getLinks() { return links;