Author: timbo
Date: Mon Mar 10 15:01:04 2008
New Revision: 10905

Modified:
   dbi/trunk/Changes
   dbi/trunk/lib/DBD/Gofer/Transport/stream.pm

Log:
Changed gofer stream transport to improve error reporting.


Modified: dbi/trunk/Changes
==============================================================================
--- dbi/trunk/Changes   (original)
+++ dbi/trunk/Changes   Mon Mar 10 15:01:04 2008
@@ -46,6 +46,11 @@
     to not error when fetching after all rows already fetched.
     (Was fixed for compiled drivers back in DBI 1.31.)
     Thanks to Mark Overmeer.
+  Fixed C sprintf formats and casts, fixing compiler warnings.
+
+  Changed gofer stream transport to improve error reporting.
+
+  Added options to t/85gofer.t so it's more useful for manual testing.
 
 =head2 Changes in DBI 1.602 (svn rev 10706)  8th February 2008
 

Modified: dbi/trunk/lib/DBD/Gofer/Transport/stream.pm
==============================================================================
--- dbi/trunk/lib/DBD/Gofer/Transport/stream.pm (original)
+++ dbi/trunk/lib/DBD/Gofer/Transport/stream.pm Mon Mar 10 15:01:04 2008
@@ -154,12 +154,12 @@
     $self->read_response_from_fh( {
         $efh => {
             error => sub { warn "error reading response stderr: $!"; 
$errno||=$!; 1 },
-            eof   => sub { warn "eof on stderr" if 0; 1 },
+            eof   => sub { warn "eof reading efh" if $trace >= 4; 1 },
             read  => sub { $stderr_msg .= $_; 0 },
         },
         $rfh => {
             error => sub { warn "error reading response: $!"; $errno||=$!; 1 },
-            eof   => sub { warn "eof on stdout" if 0; 1 },
+            eof   => sub { warn "eof reading rfh" if $trace >= 4; 1 },
             read  => sub { $encoded_response .= $_; 
($encoded_response=~s/\015\012$//) ? 1 : 0 },
         },
     });
@@ -168,17 +168,16 @@
     # probably exited, possibly with an error to stderr.
     # Turn this situation into a reasonably useful DBI error.
     if (not $encoded_response) {
-        my $msg = "No response received";
-        if (chomp $stderr_msg && $stderr_msg) {
-            $msg .= sprintf ", error reported by \"%s\" (pid %d%s): %s",
+        my @msg;
+        push @msg, "error while reading response: $errno" if $errno;
+        if ($stderr_msg) {
+            chomp $stderr_msg;
+            push @msg, sprintf "error reported by \"%s\" (pid %d%s): %s",
                 $self->cmd_as_string,
                 $pid, ((kill 0, $pid) ? "" : ", exited"),
                 $stderr_msg;
         }
-        else {
-            $msg .= ($errno) ? ", error while reading response: $errno" : "(no 
error message)";
-        }
-        die "$msg\n";
+        die join(", ", "No response received", @msg)."\n";
     }
 
     $self->trace_msg("Response received: $encoded_response\n",0)

Reply via email to