Code

Updated Socket read handling
authorhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Tue, 22 Jan 2008 10:59:26 +0000 (10:59 +0000)
committerhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Tue, 22 Jan 2008 10:59:26 +0000 (10:59 +0000)
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@8535 594d385d-05f5-0310-b6e9-bd551577e9d8

gosa-core/include/class_socketClient.inc

index 6857112114b45fc0b6a1517c169ed72ac4049554..eefff1b7bd11b6df0e415b69af76d9a85be27b3c 100644 (file)
@@ -111,18 +111,20 @@ class Socket_Client
        public function read()
        {
                // Output the request results
-               $str = FALSE;
+               $str = "";
                $data = "test";
                socket_set_timeout($this->handle,$this->timeout);                       
-               stream_set_blocking($this->handle,1);
-
-               /* Read while last character is Newline, or we exceeded the timelimit 
-         */
+               stream_set_blocking($this->handle,0);
                $start = microtime();
-               while(!preg_match("/\\\n$/",$str) && get_MicroTimeDiff($start,microtime()) < $this->timeout) {
+
+               while(strlen($str) == 0 || get_MicroTimeDiff($start,microtime()) < $this->timeout) {
                        usleep(10000);
                        $data = fread($this->handle, 1024000);
-                       $str .= $data;
+                       if($data && strlen($data)>0) {
+                               $str .= $data;
+                       } else {
+                               break;
+                       }
                }
                if(get_MicroTimeDiff($start,microtime()) >= $this->timeout){
                        trigger_error(sprintf("Exceeded timeout %f while reading from socket. Time spend for reading was %f.",$this->timeout,get_MicroTimeDiff($start,microtime())));
@@ -131,31 +133,6 @@ class Socket_Client
                $this->b_data_send = FALSE;
                $str = $this->decrypt($str);
                return($str);   
-
-
-#      $str = FALSE;
-#      if($this->handle){
-#
-#              /* Check if there is something to read for us */
-#              $read = array("0"=>$this->handle);
-#              $write = array();
-#              $accept = array();      
-#              $start = microtime();           
-#              $num = @stream_select($read,$write,$accept,floor($this->timeout), ceil($this->timeout*100000));
-#              $str = "";              
-#              socket_set_timeout($this->handle,$this->timeout);                       
-#
-#              /* Read data if necessary */
-#              while($num && get_MicroTimeDiff($start,microtime()) < $this->timeout){
-#                      $str.= fread($this->handle, 1024000);
-#                      $read = array("0"=>$this->handle);      
-#                      $num = stream_select($read,$write,$accept,0,200000);
-#              }
-#              $this->bytes_read = strlen($str);
-#              $this->b_data_send = FALSE;
-#              $str = $this->decrypt($str);
-#      }
-#      return $str;
        }