Thank you,<br><br>You give me and idea, and I fixed this annoying bug - we should only wrap all <br>curl code into withCurlDo function, so the longTask function should be following:<br><br>longTask = do<br>  putStrLn &quot;Long task started (curl)&quot;<br>
  withCurlDo $ do<br>             curl &lt;- initialize<br>             setopts curl [CurlCookieJar &quot;cookies&quot;]<br>  <br>             handle (errorHandler ()) $ <br>                    mapM_ (\_ -&gt; getSite curl link &gt;&gt; return ()) [0..100]<br>
  return ()<br><br>Now it works fine and handles interrupts correctly.<br><br>Best regards,<br>Vasyl Pasternak<br><br><div class="gmail_quote">2009/9/24 Brandon S. Allbery KF8NH <span dir="ltr">&lt;<a href="mailto:allbery@ece.cmu.edu">allbery@ece.cmu.edu</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div style=""><div class="im"><div><div>On Sep 24, 2009, at 06:20 , Brandon S. Allbery KF8NH wrote:</div>
<blockquote type="cite"><div style=""><div><div>On Sep 24, 2009, at 05:30 , Vasyl Pasternak wrote:</div><blockquote type="cite">Yesterday I tried to implement simple tool to download pages, and wanted catch Ctrl-C (and other &#39;killing&#39; messages) from haskell to handle state saving. Without curl (when I perform some long operation) haskell throws UserInterrupt exception immediately, but if I put long operation, which downloads page from the WEB (from the far-far-away server :) ) than I noticed following issues:<br>
</blockquote></div><div><br></div><div>You&#39;re going to have problems any time a C library installs its own signal handler, which I would expect libcurl to do so it can clean up after itself.  This is true even in C-to-C calling; you need a way to hook the signal handler, which some libraries provide in their API and others you just lose.</div>
</div></blockquote></div><div><br></div></div><div>Just occurred to me I should clarify:  while most exception handling mechanisms support the concept of re-throwing exceptions to outer exception handlers, POSIX signals do not.  The best you could hope for in a library routine which handles signals itself is an API hook into the signal handler; next best is the API returning a signal-occurred error/exception value.</div>
<div><br></div><div>Note that I have no idea how the equivalent signaling mechanism works on Win32.</div><div class="im"><br><div> <span style="border-collapse: separate; border-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><div style="">
<span style="border-collapse: separate; border-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><span style="border-collapse: separate; border-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><div>
<font face="Monaco"><span style="font-family: Monaco;"><span style="font-family: Monaco;">-- </span></span></font></div><div><font face="Monaco"><span style="font-family: Monaco;"><span style="font-family: Monaco;">brandon s. allbery [solaris,freebsd,perl,pugs,haskell] <a href="mailto:allbery@kf8nh.com" target="_blank">allbery@kf8nh.com</a></span></span></font></div>
<div><font face="Monaco"><span style="font-family: Monaco;"><span style="font-family: Monaco;">system administrator [openafs,heimdal,too many hats] <a href="mailto:allbery@ece.cmu.edu" target="_blank">allbery@ece.cmu.edu</a></span></span></font></div>
<div><font face="Monaco"><span style="font-family: Monaco;"><span style="font-family: Monaco;">electrical and computer engineering, carnegie mellon university    KF8NH</span></span></font></div><span style="border-collapse: separate; border-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><br>
</span></span></span></div></span> </div><br></div></div></blockquote></div><br>