<div dir="ltr"><div>Sorry about the delay.</div><div><br></div><div>I didn't find any other references to SetTcpClient so I removed it and I created a pull request.</div><div><br></div></div><div class="gmail_extra"><br clear="all">

<div><div dir="ltr"><b style="font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">Jonathan Gagnon</b><br style="color:rgb(136,136,136);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">

<span style="font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">Architecte d'application / Application Architect</span><div><div>600, boulevard Armand-Frappier, bureau 200</div><div>Laval (Québec) H7V 4B4 </div>

<div>Canada</div><div><div>T : 450-662-6101 poste 234</div><div><font size="1"><a href="http://www.croesus.com" target="_blank"><img src="http://www.croesus.com/images/signature/Croesus-Logo.jpg"></a><br></font></div><div>

<a href="http://www.facebook.com/pages/Croesus-Finansoft/345020305606240" target="_blank"><img src="http://www.croesus.com/images/signature/facebook32.png"></a><a href="http://www.linkedin.com/company/croesus-finansoft?trk=hb_tab_compy_id_26141" target="_blank"><img src="http://www.croesus.com/images/signature/linkedin32.png"></a><a href="https://twitter.com/CroesusFin" target="_blank"><img src="http://www.croesus.com/images/signature/twitter32.png"></a><br>

</div><div><a></a><br></div></div></div></div></div>
<br><br><div class="gmail_quote">On Thu, Jan 23, 2014 at 12:34 PM, "Andrés G. Aragoneses" <span dir="ltr"><<a href="mailto:knocte@gmail.com" target="_blank">knocte@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Sounds good, then can the SetTcpClient() method be removed?<br>
<br>
(If it can't because other places in the code are using it, you would<br>
need to:<br>
- Either make them use the new ctor.<br>
- Or fix SetTcpClient() to close the previous socket?<br>
)<br>
<br>
If it can be removed because there are no more things using it, I say<br>
simply create a pull request with your change.<br>
<div class="im"><br>
<br>
On 23/01/14 16:59, Jonathan Gagnon wrote:<br>
> Here is the proposed change.  See attached files.<br>
><br>
> I'm not too familiar with sending diffs so let me know if I didn't send<br>
> it in the expected format.<br>
><br>
</div>> *Jonathan Gagnon*<br>
<div class="im">> Architecte d'application / Application Architect<br>
> 600, boulevard Armand-Frappier, bureau 200<br>
> Laval (Québec) H7V 4B4<br>
> Canada<br>
> T : <a href="tel:450-662-6101" value="+14506626101">450-662-6101</a> poste 234<br>
</div>> <<a href="http://www.croesus.com" target="_blank">http://www.croesus.com</a>><br>
> <<a href="http://www.facebook.com/pages/Croesus-Finansoft/345020305606240" target="_blank">http://www.facebook.com/pages/Croesus-Finansoft/345020305606240</a>><<a href="http://www.linkedin.com/company/croesus-finansoft?trk=hb_tab_compy_id_26141" target="_blank">http://www.linkedin.com/company/croesus-finansoft?trk=hb_tab_compy_id_26141</a>><<a href="https://twitter.com/CroesusFin" target="_blank">https://twitter.com/CroesusFin</a>><br>


<div class="im">><br>
><br>
><br>
> On Wed, Jan 22, 2014 at 5:15 PM, "Andrés G. Aragoneses"<br>
</div><div><div class="h5">> <<a href="mailto:knocte@gmail.com">knocte@gmail.com</a> <mailto:<a href="mailto:knocte@gmail.com">knocte@gmail.com</a>>> wrote:<br>
><br>
>     On 22/01/14 22:32, Jonathan Gagnon wrote:<br>
>     > I found a leak in TcpListener.AcceptTcpClient :<br>
>     ><br>
>     > public TcpClient AcceptTcpClient ()<br>
>     > {<br>
>     > if (!active)<br>
>     > throw new InvalidOperationException ("Socket is not listening");<br>
>     ><br>
>     > Socket clientSocket = server.Accept ();<br>
>     ><br>
>     > TcpClient client = new TcpClient();  // this call creates a socket<br>
>     even<br>
>     > though we don't need it<br>
>     > // use internal method SetTcpClient to make a<br>
>     > // client with the specified socket<br>
>     > client.SetTcpClient (clientSocket);  // This method leaks the socket<br>
>     > created by the default constructor.<br>
>     ><br>
>     > return client;<br>
>     > }<br>
>     ><br>
>     ><br>
>     > The method calls the default TcpClient constructor which creates a new<br>
>     > socket.  SetTcpClient is then called to assign the accepted socket to<br>
>     > the TcpClient object.  The problem is that the SetTcpClient simply<br>
>     > replaces the old socket reference by the new without closing the old<br>
>     > socket.  The result is that the socket created by the default<br>
>     > constructor remains until the GC reclaims it.<br>
>     ><br>
>     > The fix would be really easy.  Instead of calling the default<br>
>     TcpClient<br>
>     > constructor, a new constructor could be created taking the socket as<br>
>     > parameter.  We would then avoid creating and leaking a socket<br>
>     every time<br>
>     > the method is called.  The fixed method would look like this :<br>
>     ><br>
>     > public TcpClient AcceptTcpClient ()<br>
>     > {<br>
>     > if (!active)<br>
>     > throw new InvalidOperationException ("Socket is not listening");<br>
>     ><br>
>     > Socket clientSocket = server.Accept ();<br>
>     ><br>
>     > TcpClient client = new TcpClient(clientSocket);<br>
>     ><br>
>     > return client;<br>
>     > }<br>
>     ><br>
>     ><br>
>     > I could create a fix with the proposed solution.  Any thoughts?<br>
><br>
>     Propose your solution as diff format please, it's much easier to<br>
>     understand and review.<br>
><br>
><br>
>     _______________________________________________<br>
>     Mono-devel-list mailing list<br>
>     <a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a><br>
</div></div>>     <mailto:<a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a>><br>
>     <a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
<div class="HOEnZb"><div class="h5">><br>
><br>
><br>
><br>
> _______________________________________________<br>
> Mono-devel-list mailing list<br>
> <a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a><br>
> <a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
><br>
<br>
<br>
_______________________________________________<br>
Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
</div></div></blockquote></div><br></div>