<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2800.1491" name=GENERATOR></HEAD>
<BODY>
<DIV>
<DIV><SPAN class=250471514-24032005><FONT face=Arial 
size=2>Hi,</FONT></SPAN></DIV>
<DIV><SPAN class=250471514-24032005><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp; I 
posed a mail about this issue before but got no response, so I decided to put 
together a test app to demonstrate the issue.&nbsp; If you run the following app 
using the MS .NET framework you will get a timeout exception thrown after 
~10secs, which is the correct behaviour.&nbsp; However, using the mono runtime 
the timeout exception is not thrown for 3mins 9secs for the first run, then 
6mins 19secs for the second<SPAN class=890312214-24032005> and so 
on</SPAN>.&nbsp; The IP that is defined is just a dud, and doesn't exist, so the 
timeout should be thrown after the elapsed time has 
expired.&nbsp;</FONT></SPAN></DIV>
<DIV><SPAN class=250471514-24032005><FONT><FONT face=Arial><FONT size=2><SPAN 
class=890312214-24032005>&nbsp;&nbsp;&nbsp; </SPAN>If anyone has any 
insight,&nbsp;<SPAN class=890312214-24032005>please </SPAN>could they let me 
know.&nbsp; </FONT></FONT></FONT></SPAN></DIV>
<DIV><SPAN class=250471514-24032005><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=250471514-24032005><FONT face=Arial size=2>Thanks a 
lot</FONT></SPAN></DIV>
<DIV><SPAN class=250471514-24032005><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=250471514-24032005><FONT face=Arial size=2>Andrew 
Gleave</FONT></SPAN></DIV></DIV>
<P align=left><FONT face="Lucida Sans Unicode" size=2>Software 
Engineer</FONT></P>
<P align=left><FONT face="Lucida Sans Unicode" size=2>IFG Management Limited 
<BR></FONT><A href="http://www.ifgint.com" target=_blank><FONT 
face="Lucida Sans Unicode" size=2>http://www.ifgint.com</FONT></A></P>
<P align=left><FONT face=Arial size=2></FONT>&nbsp;</P>
<P align=left><SPAN class=890312214-24032005><FONT face=Arial 
size=2>/*******************************************************/</FONT></SPAN></P><FONT 
face=Arial size=2><FONT color=#0000ff size=2>
<P>using</FONT><FONT size=2> System;</P></FONT><FONT color=#0000ff size=2>
<P>using</FONT><FONT size=2> System.Text;</P></FONT><FONT color=#0000ff size=2>
<P>using</FONT><FONT size=2> System.Net;</P></FONT><FONT color=#0000ff size=2>
<P>using</FONT><FONT size=2> System.Timers;</P></FONT><FONT color=#0000ff 
size=2>
<P>public</FONT><FONT size=2> </FONT><FONT color=#0000ff 
size=2>class</FONT><FONT size=2> Runner</P>
<P>{</P>
<P></FONT><FONT color=#0000ff size=2>private</FONT><FONT size=2> </FONT><FONT 
color=#0000ff size=2>const</FONT><FONT size=2> </FONT><FONT color=#0000ff 
size=2>string</FONT><FONT size=2> url = "http://14.125.254.1:80/";</P>
<P></P>
<P></FONT><FONT color=#0000ff size=2>public</FONT><FONT size=2> </FONT><FONT 
color=#0000ff size=2>static</FONT><FONT size=2> </FONT><FONT color=#0000ff 
size=2>void</FONT><FONT size=2> Main()</P>
<P>{</P>
<P>RequestTest[] events = </FONT><FONT color=#0000ff size=2>new</FONT><FONT 
size=2> RequestTest[5];</P>
<P></FONT><FONT color=#0000ff size=2>for</FONT><FONT size=2>(</FONT><FONT 
color=#0000ff size=2>int</FONT><FONT size=2> i = 0; i &lt; 5; i++)</P>
<P>events[i] = </FONT><FONT color=#0000ff size=2>new</FONT><FONT size=2> 
RequestTest(url, 15000, i);</P>
<P></P>
<P>Console.WriteLine("Type 'quit' to exit");</P>
<P></P>
<P>Listen:</P>
<P></FONT><FONT color=#0000ff size=2>string</FONT><FONT size=2> input = 
Console.ReadLine();</P>
<P></FONT><FONT color=#0000ff size=2>if</FONT><FONT size=2>(input == "quit")</P>
<P>{</P>
<P></FONT><FONT color=#0000ff size=2>for</FONT><FONT size=2>(</FONT><FONT 
color=#0000ff size=2>int</FONT><FONT size=2> i = 0; i &lt; 5; i++)</P>
<P>{</P>
<P>events[i].Dispose();</P>
<P>events[i] = </FONT><FONT color=#0000ff size=2>null</FONT><FONT size=2>;</P>
<P>}</P>
<P>}</P>
<P></FONT><FONT color=#0000ff size=2>else</P></FONT><FONT size=2>
<P></FONT><FONT color=#0000ff size=2>goto</FONT><FONT size=2> Listen;</P>
<P>}</P>
<P>}</P></FONT><FONT color=#0000ff size=2>
<P>public</FONT><FONT size=2> </FONT><FONT color=#0000ff 
size=2>class</FONT><FONT size=2> RequestTest : IDisposable</P>
<P>{</P>
<P></FONT><FONT color=#0000ff size=2>int</FONT><FONT size=2> m_ID;</P>
<P>HttpStatusCode m_StatusCode;</P>
<P></FONT><FONT color=#0000ff size=2>string</FONT><FONT size=2> 
m_ContentType;</P>
<P></FONT><FONT color=#0000ff size=2>string</FONT><FONT size=2> m_URL = 
</FONT><FONT color=#0000ff size=2>string</FONT><FONT size=2>.Empty;</P>
<P>TimeSpan m_TestDuration = </FONT><FONT color=#0000ff size=2>new</FONT><FONT 
size=2> TimeSpan(0, 0, 0);</P>
<P>System.Timers.Timer m_Timer = </FONT><FONT color=#0000ff 
size=2>new</FONT><FONT size=2> System.Timers.Timer();</P>
<P></FONT><FONT color=#0000ff size=2>public</FONT><FONT size=2> 
RequestTest(</FONT><FONT color=#0000ff size=2>string</FONT><FONT size=2> url, 
</FONT><FONT color=#0000ff size=2>int</FONT><FONT size=2> interval, </FONT><FONT 
color=#0000ff size=2>int</FONT><FONT size=2> id)</P>
<P>{</P>
<P>m_ID = id;</P>
<P>m_URL = url;</P>
<P>m_Timer.Elapsed += </FONT><FONT color=#0000ff size=2>new</FONT><FONT size=2> 
ElapsedEventHandler(ExecuteRequest);</P>
<P>m_Timer.Interval = interval;</P>
<P>m_Timer.AutoReset = </FONT><FONT color=#0000ff size=2>true</FONT><FONT 
size=2>;</P>
<P>m_Timer.Enabled = </FONT><FONT color=#0000ff size=2>true</FONT><FONT 
size=2>;</P>
<P>}</P>
<P></FONT><FONT color=#0000ff size=2>public</FONT><FONT size=2> </FONT><FONT 
color=#0000ff size=2>void</FONT><FONT size=2> ExecuteRequest(</FONT><FONT 
color=#0000ff size=2>object</FONT><FONT size=2> source, ElapsedEventArgs e)</P>
<P>{</P>
<P>HttpWebRequest request = </FONT><FONT color=#0000ff size=2>null</FONT><FONT 
size=2>;</P>
<P>HttpWebResponse response = </FONT><FONT color=#0000ff size=2>null</FONT><FONT 
size=2>;</P>
<P>DateTime requestStart = DateTime.Now;</P>
<P></P>
<P></FONT><FONT color=#0000ff size=2>try</P></FONT><FONT size=2>
<P>{</P>
<P>Console.WriteLine("{0} - Executing. ID: {1}", DateTime.Now, m_ID);</P>
<P></FONT><FONT color=#008000 size=2>//create the request</P></FONT><FONT 
size=2>
<P>request = (HttpWebRequest)WebRequest.Create(m_URL);</P>
<P>request.MaximumAutomaticRedirections = 4;</P>
<P>request.MaximumResponseHeadersLength = 4;</P>
<P>request.Timeout = 10000;</P>
<P>response = (HttpWebResponse)request.GetResponse();</P>
<P></FONT><FONT color=#008000 size=2>//get the status and content 
type</P></FONT><FONT size=2>
<P>m_StatusCode = response.StatusCode;</P>
<P>m_ContentType = response.ContentType;</P>
<P></FONT><FONT color=#008000 size=2>//mark the end of the test </P></FONT><FONT 
size=2>
<P>m_TestDuration = DateTime.Now - requestStart;</P>
<P>Console.WriteLine("{0} - Completed. ID: {1} Duration: {2}", DateTime.Now, 
m_ID, m_TestDuration);</P>
<P>}</P>
<P></FONT><FONT color=#0000ff size=2>catch</FONT><FONT size=2>(WebException 
ex)</P>
<P>{</P>
<P></FONT><FONT color=#008000 size=2>//mark the end of the test </P></FONT><FONT 
size=2>
<P>m_TestDuration = DateTime.Now - requestStart;</P>
<P>Console.WriteLine(</FONT><FONT color=#0000ff size=2>string</FONT><FONT 
size=2>.Format("{0} - Duration: {1} ID: {2} WebException: {3}", </P>
<P>DateTime.Now, m_TestDuration, m_ID, ex.Message));</P>
<P>}</P>
<P></FONT><FONT color=#0000ff size=2>catch</FONT><FONT size=2>(Exception ex)</P>
<P>{</P>
<P>Console.WriteLine(</FONT><FONT color=#0000ff size=2>string</FONT><FONT 
size=2>.Format("{0} - Duration: {0} ID: {1} Exception: {2}", </P>
<P>DateTime.Now, m_TestDuration, m_ID, ex.Message));</P>
<P>}</P>
<P></FONT><FONT color=#0000ff size=2>finally</P></FONT><FONT size=2>
<P>{</P>
<P>m_StatusCode = 0;</P>
<P>m_ContentType = </FONT><FONT color=#0000ff size=2>string</FONT><FONT 
size=2>.Empty;</P>
<P>request = </FONT><FONT color=#0000ff size=2>null</FONT><FONT size=2>;</P>
<P></FONT><FONT color=#0000ff size=2>if</FONT><FONT size=2>(response != 
</FONT><FONT color=#0000ff size=2>null</FONT><FONT size=2>)</P>
<P>{</P>
<P>response.Close();</P>
<P>response = </FONT><FONT color=#0000ff size=2>null</FONT><FONT size=2>;</P>
<P>}</P>
<P>}</P>
<P>}</P>
<P></FONT><FONT color=#0000ff size=2>public</FONT><FONT size=2> </FONT><FONT 
color=#0000ff size=2>void</FONT><FONT size=2> Dispose()</P>
<P>{</P>
<P></FONT><FONT color=#0000ff size=2>if</FONT><FONT size=2>(m_Timer != 
</FONT><FONT color=#0000ff size=2>null</FONT><FONT size=2>)</P>
<P>{</P>
<P>m_Timer.Dispose();</P>
<P>m_Timer = </FONT><FONT color=#0000ff size=2>null</FONT><FONT size=2>;</P>
<P>}</P>
<P>}</P>
<P>}</P></FONT></FONT>
<P align=left><FONT face=Arial size=2><SPAN class=890312214-24032005><FONT 
face=Arial 
size=2>/*******************************************************/</FONT></SPAN></FONT></P>
<P align=left><FONT face=Arial size=2></FONT>&nbsp;</P>
<DIV><FONT face=Arial size=2></FONT><FONT face=Arial 
size=2></FONT>&nbsp;</DIV>
<P>The information contained in this E-mail is confidential. It may also be 
legally privileged. It is intended only for the stated addressee(s) and access 
to it by any other person is unauthorised. If you are not an addressee, you must 
not disclose, copy, circulate or in any other way use or rely on the information 
contained in this E-mail. Such unauthorised use may be unlawful. If you have 
received this E-mail in error, please inform us immediately and delete it and 
all copies from your system.<BR></P>
<P>Due to the fact that this E-mail could become corrupted or altered during 
transmission, any advice which it contains should not be relied upon unless 
subsequently confirmed by fax or letter signed by or on behalf of this 
company.<BR></P>
<P>E-mails do not constitute compliance with any time limits or deadlines. 
<BR></P>

<HR>
This e-mail message has been scanned for Viruses and Content and cleared by 
<STRONG><FONT color=#ff8000>NetIQ MailMarshal</FONT> </STRONG>
<HR>
</BODY></HTML>