From be220e31287cb6d85ab5bbff6c76827926d3d327 Mon Sep 17 00:00:00 2001 From: hickert Date: Tue, 13 Mar 2007 07:07:23 +0000 Subject: [PATCH] Simplified the sieve class error retrieve method. Sometimes, the calculation was wrong and caused the ui to freeze for 'socket.timeout' seconds. git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@5770 594d385d-05f5-0310-b6e9-bd551577e9d8 --- include/sieve/class_sieve.inc | 29 +++++++++---------------- include/sieve/class_sieveManagement.inc | 1 + 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/include/sieve/class_sieve.inc b/include/sieve/class_sieve.inc index c16345f2b..84940955e 100644 --- a/include/sieve/class_sieve.inc +++ b/include/sieve/class_sieve.inc @@ -114,31 +114,22 @@ class sieve $this->err_len = substr($this->mtoken, 1, $this->x); $this->x++; } - //print "
Trying to receive $this->err_len bytes for result
"; + #print "
Trying to receive $this->err_len bytes for result
"; $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){ diff --git a/include/sieve/class_sieveManagement.inc b/include/sieve/class_sieveManagement.inc index ea355b2e3..da36074a0 100644 --- a/include/sieve/class_sieveManagement.inc +++ b/include/sieve/class_sieveManagement.inc @@ -308,6 +308,7 @@ class sieveManagement extends plugin _("Failed to save sieve script").": ". to_string($this->sieve_handle->error_raw). ""; +# echo nl2br($data); } } } -- 2.30.2