]> git.mxchange.org Git - friendica.git/blobdiff - include/queue.php
Merge commit 'mike/master'
[friendica.git] / include / queue.php
index 837ae31d77dffbc4f0582f55447033cb750e2a52..d4fc7dbd6277d0aa0cebd7fe198fa5a2efdc0d54 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-
+require_once("boot.php");
 
 function update_queue_time($id) {
        logger('queue: requeue item ' . $id);
@@ -16,14 +16,19 @@ function remove_queue_item($id) {
        );
 }
 
-       require_once("boot.php");
-
-       $a = new App;
+function queue_run($argv, $argc){
+  global $a, $db;
 
-       @include(".htconfig.php");
-       require_once("dba.php");
-       $db = new dba($db_host, $db_user, $db_pass, $db_data);
-               unset($db_host, $db_user, $db_pass, $db_data);
+  if(is_null($a)){
+    $a = new App;
+  }
+  
+  if(is_null($db)){
+    @include(".htconfig.php");
+    require_once("dba.php");
+    $db = new dba($db_host, $db_user, $db_pass, $db_data);
+    unset($db_host, $db_user, $db_pass, $db_data);
+  };
 
 
        require_once("session.php");
@@ -33,6 +38,8 @@ function remove_queue_item($id) {
 
        $a->set_baseurl(get_config('system','url'));
 
+       $deadguys = array();
+
        logger('queue: start');
 
        $r = q("SELECT `queue`.*, `contact`.`name`, `contact`.`uid` FROM `queue` 
@@ -48,9 +55,9 @@ function remove_queue_item($id) {
                
        $r = q("SELECT `id` FROM `queue` WHERE `last` < UTC_TIMESTAMP() - INTERVAL 15 MINUTE ");
 
-       if(! count($r))
-               killme();
-
+       if(! count($r)){
+               return;
+       }
        // delivery loop
 
        require_once('include/salmon.php');
@@ -69,6 +76,12 @@ function remove_queue_item($id) {
                        remove_queue_item($q_item['id']);
                        continue;
                }
+               if(in_array($c[0]['notify'],$deadguys)) {
+                               logger('queue: skipping known dead url: ' . $c[0]['notify']);
+                               update_queue_time($q_item['id']);
+                               continue;
+               }
+
                $u = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
                        intval($c[0]['uid'])
                );
@@ -88,11 +101,13 @@ function remove_queue_item($id) {
                                logger('queue: dfrndelivery: item ' . $q_item['id'] . ' for ' . $contact['name']);
                                $deliver_status = dfrn_deliver($owner,$contact,$data);
 
-                               if($deliver_status == (-1))
+                               if($deliver_status == (-1)) {
                                        update_queue_time($q_item['id']);
-                               else
+                                       $deadguys[] = $contact['notify'];
+                               }
+                               else {
                                        remove_queue_item($q_item['id']);
-
+                               }
                                break;
                        default:
                                if($contact['notify']) {
@@ -108,7 +123,11 @@ function remove_queue_item($id) {
                }
        }
                
-       killme();
+       return;
 
-       // NOTREACHED
+}
 
+if (array_search(__file__,get_included_files())===0){
+  queue_run($argv,$argc);
+  killme();
+}