-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Nops Matthias, I' afraid this did not work, since this function returns immediatly.
On 01/18/2014 08:11 PM, Matthias Felleisen wrote: > > If you can modify url.rkt for now, try something like this > [untested] > > ;; url.rkt (define (purify-http-port in-port) (define-values > (in-pipe out-pipe) (make-pipe)) (define exn-raised #f) (thread (λ > () (with-handlers ((exn? (lambda (e) (set! exn-raised e)))) ;; do > choose the exn you really wish to catch (define status > (http-read-status in-port)) (define chunked? (http-read-headers > in-port)) (http-pipe-data chunked? in-port out-pipe) > (close-input-port in-port)))) (or exn-raised in-pipe)) > > > > > > On Jan 18, 2014, at 5:08 PM, Eduardo Bellani wrote: > > Btw, forgot to ask, any alternatives that could solve my problem > in the short term? > > Again, thanks for the attention. > > On 01/18/2014 02:18 PM, Matthias Felleisen wrote: >>>> >>>> To supplement Matthew's response, see exn style: >>>> >>>> http://plt.eecs.northwestern.edu/snapshots/current/doc/style/Choosing_the_Right_Construct.html#%28part._.Exceptions%29 >>>> >>>> >>>> This does not address the problem part. >>>> >>>> On Jan 18, 2014, at 11:04 AM, Matthew Flatt wrote: >>>> >>>>> The `exn?` predicate would catch all exceptions from the >>>>> base libraries.[*] >>>>> >>>>> I think the problem may be that the underlying TCP port is >>>>> read in a separate decoding thread, and so the exception >>>>> and printing happens in that thread. If I'm right, then >>>>> that seems like a flaw in our implementation of decoding. >>>>> >>>>> [*] To avoid interfering with the `exn:break?` exceptions >>>>> triggered by Ctl-C, you almost always want `exn:fail?` >>>>> instead of just `exn?`. >>>>> >>>>> At Sat, 18 Jan 2014 09:50:15 -0200, Eduardo Bellani wrote: >>>> Is there a way to install a handler for the tcp-error >>>> exception? I have a function like this >>>> >>>> (define (get-page link-url (max-tries 5)) (let loop >>>> ([current-try 0]) (with-handlers ([exn? (? (e) (if (> >>>> current-try max-tries) (error 'get-page "failed because it >>>> exceeded ~a tries" max-tries) (begin (sleep 2) (loop (add1 >>>> current-try)))))]) (get-pure-port link-url)))) >>>> >>>> that I'm using to crawl some data, but sometimes it's >>>> printing: >>>> >>>> tcp-read: error reading system error: Connection reset by >>>> peer; errno=104 context...: >>>> /usr/racket/collects/net/url.rkt:392:3 >>>> >>>> Thanks for the attention. >>>> >>>>>> ____________________ Racket Users list: >>>>>> http://lists.racket-lang.org/users >>>>> ____________________ Racket Users list: >>>>> http://lists.racket-lang.org/users >>>> > > -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.14 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iEYEARECAAYFAlLdE3gACgkQSbLl0kCTjGkbVACfUnth2k7258RtRDWeGrh9jnda FW0AmgI6CmyaUCBo7HnG2cbqVq4/NHsL =cyEp -----END PGP SIGNATURE----- ____________________ Racket Users list: http://lists.racket-lang.org/users

