Improved error handling in printer class.
authorJanusz Dobrowolski <janusz@frontaccouting.eu>
Thu, 6 Sep 2012 17:27:44 +0000 (19:27 +0200)
committerJanusz Dobrowolski <janusz@frontaccouting.eu>
Thu, 6 Sep 2012 17:27:44 +0000 (19:27 +0200)
includes/remote_url.inc
reporting/includes/printer_class.inc

index fb0c1348fa48c8dbad4bbd38b26729b22615a39c..186b4f97660aeaabb6f9c737b6dacede1ad521e9 100644 (file)
@@ -60,11 +60,13 @@ function url_get_contents($url, $timeout=10)
                        "Referer: http://$host\r\n\r\n");
 
                // retrieve the response from the remote server
-               $len =0;
+               $unblocked=0;
+
                while ($line = fread($fp, 4096)) {
                        $response .= $line;
-                       if ($host=='localhost')
+                       if ($host=='localhost' && !$unblocked++)
                                stream_set_blocking($fp, 0); // just after connection switch to nonblocking mode
+                       usleep(10);
                }
                fclose( $fp );
 
index 1b5a14e31d5757ecb6cb888cdb4bb12f6e747218..93bf06a8c297ff70ffdd2e75db098868a3c2d97f 100644 (file)
@@ -34,9 +34,9 @@ class remote_printer {
 //             if($ret) return $ret;
 
         //Open a new connection to send the control file and data.
-               $stream = fsockopen("tcp://".$this->host, $this->port, $errNo, $errStr, $this->timeout);
+               $stream = @fsockopen("tcp://".$this->host, $this->port, $errNo, $errStr, $this->timeout);
         if(!$stream){
-            return _('Cannot open connection to printer');
+            return _('Cannot open connection to printer').":<br>$errStr";
         }
                if (!isset($_SESSION['_print_job'])) {
                        $_SESSION['print_job'] = 0;
@@ -95,9 +95,9 @@ class remote_printer {
        //      Print all waiting jobs on remote printer queue.
        //
     function flush_queue($queue){
-               $stream = fsockopen("tcp://".$this->host, $this->port,$errNo, $errStr, $this->timeout);
+               $stream = @fsockopen("tcp://".$this->host, $this->port,$errNo, $errStr, $this->timeout);
         if (!$stream){
-            return _('Cannot flush printing queue');
+            return _('Cannot flush printing queue').":<br>$errStr";
                        // .':<br>' . $errNo." (".$errStr.")"; return 0 (success) even on failure
         } else {
             //Print any waiting jobs