From 58b8d9c35b504ea6be20046f104825a2eac2c819 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Mon, 23 Jan 2012 11:27:51 -0500 Subject: [PATCH] Switch "exn?" to "exn:fail?" in a few important spots, to avoid catching SIGINT --- big-bang-driver.rkt | 12 +++++++----- driver.rkt | 23 +++++++++++------------ proxy.rkt | 2 +- simplified-driver.rkt | 2 +- 4 files changed, 20 insertions(+), 19 deletions(-) diff --git a/big-bang-driver.rkt b/big-bang-driver.rkt index 7bc0c4c..d5ee24a 100644 --- a/big-bang-driver.rkt +++ b/big-bang-driver.rkt @@ -92,8 +92,9 @@ [(udp-packet source (== s) body) (transition w (send-message - (with-handlers ((exn? (lambda (e) (bad-dns-packet body source s - 'unparseable)))) + (with-handlers ((exn:fail? (lambda (e) + (bad-dns-packet body source s + 'unparseable)))) (define message (packet->dns-message body)) (case (dns-message-direction message) ((request) (dns-request message source)) @@ -106,9 +107,10 @@ (message-handlers w [(dns-reply message sink) (transition w - (with-handlers ((exn? (lambda (e) (send-message - (bad-dns-packet message s sink - 'unencodable))))) + (with-handlers ((exn:fail? (lambda (e) + (send-message + (bad-dns-packet message s sink + 'unencodable))))) (send-meta-message (udp-packet s sink (dns-message->packet message)))))])))) diff --git a/driver.rkt b/driver.rkt index 5bc221f..97845e4 100644 --- a/driver.rkt +++ b/driver.rkt @@ -71,12 +71,11 @@ (udp-bind! s #f port-number) (define (service-loop) - (with-handlers ((exn:break? (lambda (e) (raise e))) - (exn? (lambda (e) - (display "Error in DNS service handler:") (newline) - (write e) - (newline) - (newline)))) + (with-handlers ((exn:fail? (lambda (e) + (display "Error in DNS service handler:") (newline) + (write e) + (newline) + (newline)))) (read-and-process-request)) (service-loop)) @@ -104,9 +103,9 @@ (flush-output) (define request-message - (with-handlers ((exn? (lambda (e) - (send-error 'format-error) - (raise e)))) + (with-handlers ((exn:fail? (lambda (e) + (send-error 'format-error) + (raise e)))) (packet->dns-message (subbytes buffer 0 packet-length)))) ;;(write request-message) (newline) @@ -126,9 +125,9 @@ (rr-set->list additional))) (define reply-packet - (with-handlers ((exn? (lambda (e) - (send-error 'server-failure) - (raise e)))) + (with-handlers ((exn:fail? (lambda (e) + (send-error 'server-failure) + (raise e)))) ;; TODO: check opcode and direction in request (define questions (dns-message-questions request-message)) (if (null? questions) diff --git a/proxy.rkt b/proxy.rkt index 1903fe9..cdc6788 100644 --- a/proxy.rkt +++ b/proxy.rkt @@ -102,7 +102,7 @@ (define (udp-packet->message packet) (match-define (udp-packet body host port) packet) (define a (address host port)) - (with-handlers ((exn? (lambda (e) (bad-dns-packet body a #f 'unparseable)))) + (with-handlers ((exn:fail? (lambda (e) (bad-dns-packet body a #f 'unparseable)))) (define message (packet->dns-message body)) (world-message message a #f))) diff --git a/simplified-driver.rkt b/simplified-driver.rkt index 9d7090a..958671b 100644 --- a/simplified-driver.rkt +++ b/simplified-driver.rkt @@ -69,7 +69,7 @@ (define (udp-packet->dns-message packet) (match-define (udp-packet body host port) packet) - (with-handlers ((exn? (lambda (e) (bad-dns-packet body host port 'unparseable)))) + (with-handlers ((exn:fail? (lambda (e) (bad-dns-packet body host port 'unparseable)))) (define message (packet->dns-message body)) (case (dns-message-direction message) ((request) (dns-request message host port))