try and fix diaspora multiple items queued issue

This commit is contained in:
Friendika
2011-11-06 16:48:13 -08:00
parent c991a1a606
commit 327105a4ea
3 changed files with 38 additions and 7 deletions

View File

@@ -1728,15 +1728,35 @@ function diaspora_transmit($owner,$contact,$slap,$public_batch) {
$a = get_app();
$logid = random_string(4);
logger('diaspora_transmit: ' . $logid . ' ' . (($public_batch) ? $contact['batch'] : $contact['notify']));
post_url((($public_batch) ? $contact['batch'] : $contact['notify']) . '/',$slap);
$dest_url = (($public_batch) ? $contact['batch'] : $contact['notify']);
if(! $dest_url) {
logger('diaspora_transmit: no url for contact: ' . $contact['id'] . ' batch mode =' . $public_batch);
return 0;
}
logger('diaspora_transmit: ' . $logid . ' ' . $dest_url);
post_url($dest_url . '/', $slap);
$return_code = $a->get_curl_code();
logger('diaspora_transmit: ' . $logid . ' returns: ' . $return_code);
if((! $return_code) || (($curl_stat == 503) && (stristr($a->get_curl_headers(),'retry-after')))) {
if((! $return_code) || (($return_code == 503) && (stristr($a->get_curl_headers(),'retry-after')))) {
logger('diaspora_transmit: queue message');
// queue message for redelivery
add_to_queue($contact['id'],NETWORK_DIASPORA,$slap,$public_batch);
$r = q("SELECT id from queue where cid = %d and network = '%s' and content = '%s' and batch = %d limit 1",
intval($contact['id']),
dbesc(NETWORK_DIASPORA),
dbesc($slap),
intval($public_batch)
);
if(count($r)) {
logger('diaspora_transmit: add_to_queue ignored - identical item already in queue');
}
else {
// queue message for redelivery
add_to_queue($contact['id'],NETWORK_DIASPORA,$slap,$public_batch);
}
}