Thomas Bruederli
2013-05-03 b15cc7d6f4c77fb941c74670eb58fb07bd9c7d9c
Check Google spell check service response for errors and report them accordingly
2 files modified
22 ■■■■ changed files
program/lib/Roundcube/rcube_spellchecker.php 15 ●●●●● patch | view | raw | blame | history
program/steps/utils/spell.inc 7 ●●●●● patch | view | raw | blame | history
program/lib/Roundcube/rcube_spellchecker.php
@@ -314,11 +314,6 @@
        if (!$this->plink) {
            if (!extension_loaded('pspell')) {
                $this->error = "Pspell extension not available";
                rcube::raise_error(array(
                    'code' => 500, 'type' => 'php',
                    'file' => __FILE__, 'line' => __LINE__,
                    'message' => $this->error), true, false);
                return;
            }
@@ -372,9 +367,19 @@
            fclose($fp);
        }
        // parse HTTP response
        if (preg_match('!^HTTP/1.\d (\d+)(.+)!', $store, $m)) {
            $http_status = $m[1];
            if ($http_status != '200')
                $this->error = 'HTTP ' . $m[1] . $m[2];
        }
        if (!$store) {
            $this->error = "Empty result from spelling engine";
        }
        else if (preg_match('/<spellresult error="([^"]+)"/', $store, $m)) {
            $this->error = "Error code $m[1] returned";
        }
        preg_match_all('/<c o="([^"]*)" l="([^"]*)" s="([^"]*)">([^<]*)<\/c>/', $store, $matches, PREG_SET_ORDER);
program/steps/utils/spell.inc
@@ -42,6 +42,13 @@
    $result = $spellchecker->get_xml();
}
if ($err = $spellchecker->error()) {
    raise_error(array('code' => 500, 'type' => 'php',
        'file' => __FILE__, 'line' => __LINE__,
        'message' => sprintf("Spell check engine error: " . $err)),
        true, false);
}
// set response length
header("Content-Length: " . strlen($result));