Check Google spell check service response for errors and report them accordingly

pull/65/merge
Thomas Bruederli 12 years ago
parent 517dae3e74
commit b15cc7d6f4

@ -314,11 +314,6 @@ class rcube_spellchecker
if (!$this->plink) { if (!$this->plink) {
if (!extension_loaded('pspell')) { if (!extension_loaded('pspell')) {
$this->error = "Pspell extension not available"; $this->error = "Pspell extension not available";
rcube::raise_error(array(
'code' => 500, 'type' => 'php',
'file' => __FILE__, 'line' => __LINE__,
'message' => $this->error), true, false);
return; return;
} }
@ -372,9 +367,19 @@ class rcube_spellchecker
fclose($fp); 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) { if (!$store) {
$this->error = "Empty result from spelling engine"; $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); preg_match_all('/<c o="([^"]*)" l="([^"]*)" s="([^"]*)">([^<]*)<\/c>/', $store, $matches, PREG_SET_ORDER);

@ -42,6 +42,13 @@ else {
$result = $spellchecker->get_xml(); $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 // set response length
header("Content-Length: " . strlen($result)); header("Content-Length: " . strlen($result));

Loading…
Cancel
Save