diff --git a/Rocksolid_Light/rslight/scripts/send.php b/Rocksolid_Light/rslight/scripts/send.php index 7ac5237..e8bcc1f 100644 --- a/Rocksolid_Light/rslight/scripts/send.php +++ b/Rocksolid_Light/rslight/scripts/send.php @@ -28,7 +28,7 @@ include("$file_newsportal"); if ($CONFIG['remote_server'] == '') { exit(); } -$logfile = $logdir . '/spoolnews.log'; +$logfile = $logdir . '/send.log'; @mkdir($spooldir . "/" . $config_name, 0755, 'recursive'); @@ -55,19 +55,27 @@ echo "\nSend Done\r\n"; function post_articles($ns, $spooldir) { global $logfile, $config_name; - if (! is_dir($spooldir . "/" . $config_name . "/outgoing/")) { - return "No messages to send\r\n"; - } $outgoing_dir = $spooldir . "/" . $config_name . "/outgoing/"; $fail_dir = $outgoing_dir . '/failed/'; + if (!is_dir($fail_dir)) { mkdir($fail_dir); } + if (! is_dir($outgoing_dir)) { + mkdir($outgoing_dir); + return "No messages to send\r\n"; + } + $messages = scandir($outgoing_dir); foreach ($messages as $message) { if (! is_file($outgoing_dir . $message)) { continue; } + if (filemtime($outgoing_dir . $message) < (time() - 14400)) { // Stop trying to send article of over 4 hours old + file_put_contents($logfile, "\n" . format_log_date() . " " . $config_name . " POST Failed: Too many retries, giving up for: " . $message, FILE_APPEND); + rename($outgoing_dir . $message, $fail_dir . $message); + continue; + } echo "Sending: " . $outgoing_dir . $message . "\r\n"; fputs($ns, "MODE READER\r\n"); $response = line_read($ns); @@ -91,13 +99,7 @@ function post_articles($ns, $spooldir) if (strcmp(substr($response, 0, 3), "441") == 0) { // Posting failed if (strcmp(substr($response, 0, 6), "441 43") == 0) { // Article specifically rejected. Move to 'failed' rename($outgoing_dir . $message, $fail_dir . $message); - } else { // Article may have failed for some other reason - // Keep retrying outgoing message for 4 hours in case of temporary issue - if (filemtime($outgoing_dir . $message) < (time() - 14400)) { - rename($outgoing_dir . $message, $fail_dir . $message); - } } - // file_put_contents($logfile, "\n" . format_log_date() . " " . $config_name . " POST Failed: " . $response, FILE_APPEND); } if (strcmp(substr($response, 0, 3), "240") == 0) { $removed = unlink($outgoing_dir . $message);