infrastructure for queueing, redelivery
This commit is contained in:
parent
552c56102e
commit
de6c777d3f
12
boot.php
12
boot.php
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
set_time_limit(0);
|
set_time_limit(0);
|
||||||
|
|
||||||
define ( 'BUILD_ID', 1018 );
|
define ( 'BUILD_ID', 1019 );
|
||||||
define ( 'DFRN_PROTOCOL_VERSION', '2.0' );
|
define ( 'DFRN_PROTOCOL_VERSION', '2.0' );
|
||||||
|
|
||||||
define ( 'EOL', "<br />\r\n" );
|
define ( 'EOL', "<br />\r\n" );
|
||||||
|
@ -378,8 +378,7 @@ function fetch_url($url,$binary = false, &$redirects = 0) {
|
||||||
|
|
||||||
|
|
||||||
$curl_time = intval(get_config('system','curl_timeout'));
|
$curl_time = intval(get_config('system','curl_timeout'));
|
||||||
if($curl_time)
|
curl_setopt($ch, CURLOPT_TIMEOUT, (($curl_time !== false) ? $curl_time : 60));
|
||||||
curl_setopt($ch, CURLOPT_TIMEOUT, $curl_time);
|
|
||||||
|
|
||||||
// by default we will allow self-signed certs
|
// by default we will allow self-signed certs
|
||||||
// but you can override this
|
// but you can override this
|
||||||
|
@ -400,7 +399,7 @@ function fetch_url($url,$binary = false, &$redirects = 0) {
|
||||||
|
|
||||||
$s = curl_exec($ch);
|
$s = curl_exec($ch);
|
||||||
|
|
||||||
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
$http_code = intval(curl_getinfo($ch, CURLINFO_HTTP_CODE));
|
||||||
$header = substr($s,0,strpos($s,"\r\n\r\n"));
|
$header = substr($s,0,strpos($s,"\r\n\r\n"));
|
||||||
if(stristr($header,'100') && (strlen($header) < 30)) {
|
if(stristr($header,'100') && (strlen($header) < 30)) {
|
||||||
// 100 Continue has two headers, get the real one
|
// 100 Continue has two headers, get the real one
|
||||||
|
@ -440,8 +439,7 @@ function post_url($url,$params, $headers = null, &$redirects = 0) {
|
||||||
curl_setopt($ch, CURLOPT_POSTFIELDS,$params);
|
curl_setopt($ch, CURLOPT_POSTFIELDS,$params);
|
||||||
|
|
||||||
$curl_time = intval(get_config('system','curl_timeout'));
|
$curl_time = intval(get_config('system','curl_timeout'));
|
||||||
if($curl_time)
|
curl_setopt($ch, CURLOPT_TIMEOUT, (($curl_time !== false) ? $curl_time : 60));
|
||||||
curl_setopt($ch, CURLOPT_TIMEOUT, $curl_time);
|
|
||||||
|
|
||||||
if(is_array($headers))
|
if(is_array($headers))
|
||||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
||||||
|
@ -459,7 +457,7 @@ function post_url($url,$params, $headers = null, &$redirects = 0) {
|
||||||
|
|
||||||
$s = curl_exec($ch);
|
$s = curl_exec($ch);
|
||||||
|
|
||||||
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
$http_code = intval(curl_getinfo($ch, CURLINFO_HTTP_CODE));
|
||||||
$header = substr($s,0,strpos($s,"\r\n\r\n"));
|
$header = substr($s,0,strpos($s,"\r\n\r\n"));
|
||||||
if(stristr($header,'100') && (strlen($header) < 30)) {
|
if(stristr($header,'100') && (strlen($header) < 30)) {
|
||||||
// 100 Continue has two headers, get the real one
|
// 100 Continue has two headers, get the real one
|
||||||
|
|
|
@ -408,3 +408,10 @@ CREATE TABLE IF NOT EXISTS `auth_codes` (
|
||||||
PRIMARY KEY ( `id` )
|
PRIMARY KEY ( `id` )
|
||||||
) ENGINE = MYISAM DEFAULT CHARSET=utf8;
|
) ENGINE = MYISAM DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `queue` (
|
||||||
|
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
||||||
|
`cid` INT NOT NULL ,
|
||||||
|
`created` DATETIME NOT NULL ,
|
||||||
|
`last` DATETIME NOT NULL ,
|
||||||
|
`content` MEDIUMTEXT NOT NULL
|
||||||
|
) ENGINE = MYISAM DEFAULT CHARSET=utf8;
|
||||||
|
|
|
@ -710,7 +710,10 @@ function dfrn_deliver($owner,$contact,$atom) {
|
||||||
|
|
||||||
$xml = post_url($contact['notify'],$postvars);
|
$xml = post_url($contact['notify'],$postvars);
|
||||||
|
|
||||||
logger('dfrn_deliver: ' . "SENDING: " . print_r($postvars,true) . "\n" . "RECEIVING: " . $xml);
|
logger('dfrn_deliver: ' . "SENDING: " . print_r($postvars,true) . "\n" . "RECEIVING: " . $xml, LOGGER_DATA);
|
||||||
|
|
||||||
|
if(! strlen($xml))
|
||||||
|
return(-1);
|
||||||
|
|
||||||
$res = simplexml_load_string($xml);
|
$res = simplexml_load_string($xml);
|
||||||
|
|
||||||
|
|
|
@ -255,10 +255,24 @@
|
||||||
case 'dfrn':
|
case 'dfrn':
|
||||||
logger('notifier: dfrndelivery: ' . $contact['name']);
|
logger('notifier: dfrndelivery: ' . $contact['name']);
|
||||||
$deliver_status = dfrn_deliver($owner,$contact,$atom);
|
$deliver_status = dfrn_deliver($owner,$contact,$atom);
|
||||||
|
|
||||||
|
if($deliver_status == (-1)) {
|
||||||
|
// queue message for redelivery
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if($followup && $contact['notify']) {
|
if($followup && $contact['notify']) {
|
||||||
slapper($owner,$contact['notify'],$slap);
|
logger('notifier: slapdelivery: ' . $contact['name']);
|
||||||
|
$deliver_status = slapper($owner,$contact['notify'],$slap);
|
||||||
|
|
||||||
|
if($deliver_status == (-1)) {
|
||||||
|
// queue message for redelivery
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
|
@ -269,7 +283,13 @@
|
||||||
logger('notifier: slapdelivery: ' . $contact['name']);
|
logger('notifier: slapdelivery: ' . $contact['name']);
|
||||||
foreach($slaps as $slappy) {
|
foreach($slaps as $slappy) {
|
||||||
if($contact['notify']) {
|
if($contact['notify']) {
|
||||||
slapper($owner,$contact['notify'],$slappy);
|
$deliver_status = slapper($owner,$contact['notify'],$slappy);
|
||||||
|
if($deliver_status == (-1)) {
|
||||||
|
// queue message for redelivery
|
||||||
|
// if not already in queue
|
||||||
|
// else if deliver_status ok and queued, remove from queue
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -277,6 +297,7 @@
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(($cmd === 'mail') && ($deliver_status == 0)) {
|
if(($cmd === 'mail') && ($deliver_status == 0)) {
|
||||||
$r = q("UPDATE `mail` SET `delivered` = 1 WHERE `id` = %d LIMIT 1",
|
$r = q("UPDATE `mail` SET `delivered` = 1 WHERE `id` = %d LIMIT 1",
|
||||||
intval($item_id)
|
intval($item_id)
|
||||||
|
@ -292,7 +313,7 @@
|
||||||
logger('notifier: urldelivery: ' . $url);
|
logger('notifier: urldelivery: ' . $url);
|
||||||
foreach($slaps as $slappy) {
|
foreach($slaps as $slappy) {
|
||||||
if($url) {
|
if($url) {
|
||||||
slapper($owner,$url,$slappy);
|
$deliver_status = slapper($owner,$url,$slappy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -205,6 +205,8 @@ EOT;
|
||||||
|
|
||||||
}
|
}
|
||||||
logger('slapper returned ' . $return_code);
|
logger('slapper returned ' . $return_code);
|
||||||
return;
|
if(! $return_code)
|
||||||
|
return(-1);
|
||||||
|
return ((substr($return_code,0,1) === '2') ? 0 : 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -173,6 +173,6 @@ function load_database($db) {
|
||||||
$errors ++;
|
$errors ++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $errors;
|
return $errors;
|
||||||
}
|
}
|
|
@ -167,3 +167,12 @@ PRIMARY KEY ( `id` )
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function update_1018() {
|
||||||
|
q("CREATE TABLE IF NOT EXISTS `queue` (
|
||||||
|
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
||||||
|
`cid` INT NOT NULL ,
|
||||||
|
`created` DATETIME NOT NULL ,
|
||||||
|
`last` DATETIME NOT NULL ,
|
||||||
|
`content` MEDIUMTEXT NOT NULL
|
||||||
|
) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue