From f03a62a6c2cd3a47a4741c10494308b758a16504 Mon Sep 17 00:00:00 2001 From: Ryan Culpepper Date: Thu, 12 Jun 2014 18:27:44 -0400 Subject: [PATCH] db/postgresql: disconnect on EOF at ready-for-query --- pkgs/db-pkgs/db-lib/db/private/postgresql/connection.rkt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/db-pkgs/db-lib/db/private/postgresql/connection.rkt b/pkgs/db-pkgs/db-lib/db/private/postgresql/connection.rkt index c6b3f0d330..38c83b63b2 100644 --- a/pkgs/db-pkgs/db-lib/db/private/postgresql/connection.rkt +++ b/pkgs/db-pkgs/db-lib/db/private/postgresql/connection.rkt @@ -103,6 +103,8 @@ (define/private (recv-message fsym) (let ([r (raw-recv)]) (cond [(ErrorResponse? r) + ;; No need to check for FATAL errors here and disconnect, because + ;; followed by EOF, handled by check-ready-for-query. (check-ready-for-query fsym #t) (raise-backend-error fsym r)] [(or (NoticeResponse? r) @@ -128,7 +130,8 @@ ((idle) #f) ((transaction) #t) ((failed) 'invalid)))] - [(and or-eof? (eof-object? r)) (void)] + [(and or-eof? (eof-object? r)) + (disconnect* #f)] [else (error/comm fsym "expecting ready-for-query")]))) ;; == Asynchronous messages