Code

Replaced print_red with msg_dialog, for testing
[gosa.git] / include / sieve / class_sieve.inc
index c16345f2b394285b1d930a4d607ba325ad49e330..c45d0f18e2da2878bac90b0441461aa487eaf8fa 100644 (file)
@@ -1,4 +1,4 @@
-<?
+<?php
 
 /*
  * $Id: class_sieve.inc,v 1.1 2005/02/21 09:33:01 cajus Exp $ 
@@ -114,31 +114,22 @@ class sieve
                                $this->err_len = substr($this->mtoken, 1, $this->x);
                                $this->x++;    
                        }
-                       //print "<br>Trying to receive $this->err_len bytes for result<br>";
+                       #print "<br>Trying to receive $this->err_len bytes for result<br>";
                        $this->line = fgets($this->fp,$this->err_len);
                        $this->error_raw[]=substr($this->line, 0, strlen($this->line) -2);    //we want to be nice and strip crlf's
                        $this->err_recv = strlen($this->line);
 
-                       $last_cnt_to_fetch = -1;
-                       while($this->err_recv < ($this->err_len)){
-
-                               /* We are trying to read the same count of chars 
-                 *  as we tried last while loop. 
-                                * There must be something wrong-
-                 */
-                               if($last_cnt_to_fetch   == ($this->err_len-$this->err_recv)){
-                                       $cur = $max;
-                                       echo "Sieve : failed to read error msgs, .. skipped endless loop! ~class_sieve.inc 525";
-                               }
-                               $last_cnt_to_fetch = $this->err_len-$this->err_recv;
-                               $this->line = fgets($this->fp);//, ($this->err_len-$this->err_recv));
-                               $this->error_raw[]=substr($this->line, 0, strlen($this->line) -2);    //we want to be nice and strip crlf's
-                               $this->err_recv += strlen($this->line);
-                       } /* end while */
+                       /* Ensure max loop of 1000, to keep the ui from freezing */
+                       $max = 1000;
+                       $cur = 0;
 
-                       $this->line = fgets($this->fp, 1024);   //we need to grab the last crlf, i think.  this may be a bug...
-                       $this->error=EC_UNKNOWN;
+                       while($this->err_recv < ($this->err_len) && ($cur < $max)){
 
+                               $cur ++;
+                               $this->line      = fgets($this->fp,4096);
+                               $this->err_recv += strlen($this->line);
+                               $this->error_raw[]=preg_replace("/\r\n/","",$this->line);    //we want to be nice and strip crlf'
+                       } 
                } /* end if */
                elseif($this->mtoken[0] == "("){
                        switch($this->mtoken){
@@ -289,7 +280,7 @@ class sieve
   function sieve_login()
   {
 
-    $this->fp=fsockopen($this->host,$this->port);
+    $this->fp=@fsockopen($this->host,$this->port);
     if($this->fp == false)
         return false;