# HG changeset patch # User Ivo Smits # Date 1303336892 -7200 # Node ID ca88deec535259bcef4c33801a6ede1bfcdad6e6 # Parent ae0c67d72670c070fd58a177da7ca17e25d96d94 Add Xref header when sending messages to client (seems to fix message corruption issues in Thunderbird) diff -r ae0c67d72670 -r ca88deec5352 server.php --- a/server.php Tue Apr 12 14:54:26 2011 +0200 +++ b/server.php Thu Apr 21 00:01:32 2011 +0200 @@ -60,7 +60,6 @@ nntp_writeline_data(STDOUT, 'IHAVE'); nntp_writeline_data(STDOUT, 'LIST ACTIVE'); nntp_writeline(STDOUT, '.'); - //HDR, LIST, OVER, STARTTLS, STREAMING, break; case 'DATE': nntp_writeline(STDOUT, '111 '.gmdate('YmdHis')); @@ -132,7 +131,15 @@ default: throw new Exception('Internal error'); } if ($cmd == 'HEAD' || $cmd == 'ARTICLE') foreach (explode("\r\n", $article['header']) as $line) nntp_writeline_data(STDOUT, $line); - if ($cmd == 'ARTICLE') nntp_writeline(STDOUT, ''); + if ($cmd == 'HEAD' || $cmd == 'ARTICLE') { + $grouprefsh = array('localhost'); + foreach ($db->evalAllAssoc('SELECT * FROM `groupmessages` WHERE `message` = ?', $article['id']) as $groupref) { + $groupname = $db->eval('SELECT `name` FROM `groups` WHERE `id` = ?', $groupref['group']); + $grouprefsh[] = $groupname.':'.$groupref['number']; + } + nntp_writeline_data(STDOUT, 'Xref: '.implode(' ', $grouprefsh)); + } + if ($cmd == 'ARTICLE') nntp_writeline_data(STDOUT, ''); if ($cmd == 'BODY' || $cmd == 'ARTICLE') foreach (explode("\r\n", $article['body']) as $line) nntp_writeline_data(STDOUT, $line); if ($cmd != 'STAT') nntp_writeline(STDOUT, '.'); break; diff -r ae0c67d72670 -r ca88deec5352 todo.txt --- a/todo.txt Tue Apr 12 14:54:26 2011 +0200 +++ b/todo.txt Thu Apr 21 00:01:32 2011 +0200 @@ -1,2 +1,4 @@ - Make sure that group article numbers are never reused, not even if the last one is deleted (groupmessages table) - Allow to store (part of) article data in file +- Expire articles after a certain time +- Reject old articles