[#5726] Rss feed now updates correctly for new topics.
diff --git a/ForgeDiscussion/forgediscussion/controllers/root.py b/ForgeDiscussion/forgediscussion/controllers/root.py
index cf1116e..9174fba 100644
--- a/ForgeDiscussion/forgediscussion/controllers/root.py
+++ b/ForgeDiscussion/forgediscussion/controllers/root.py
@@ -131,7 +131,8 @@ def save_new_topic(self, subject=None, text=None, forum=None, **kw):
         require_access(discussion, 'post')
         thd = discussion.get_discussion_thread(dict(
             headers=dict(Subject=subject)))[0]
-        thd.post(subject, text)
+        p = thd.post(subject, text)
+        thd.post_to_feed(p)
         flash('Message posted')
         redirect(thd.url())
 
diff --git a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
index 34b71c9..3f45b46 100644
--- a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
+++ b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
@@ -27,6 +27,7 @@
 import pkg_resources
 from pylons import tmpl_context as c
 from nose.tools import assert_equal, assert_in
+import feedparser
 
 from allura import model as M
 from allura.tasks import mail_tasks
@@ -632,6 +633,69 @@ def test_thread_announcement(self):
         r = self.app.get('/discussion/testforum/childforum/')
         self.check_announcement_table(r, 'AAAA')
 
+    def test_post_to_feed(self):
+        # Create a new topic
+        r = self.app.get('/discussion/create_topic/')
+        f = r.html.find(
+            'form', {'action': '/p/test/discussion/save_new_topic'})
+        params = dict()
+        inputs = f.findAll('input')
+        for field in inputs:
+            if field.has_key('name'):
+                params[field['name']] = field.has_key(
+                    'value') and field['value'] or ''
+        params[f.find('textarea')['name']] = 'XYZ'
+        params[f.find('select')['name']] = 'testforum'
+        params[f.find('input', {'style': 'width: 90%'})['name']] = 'AAAA'
+        thread = self.app.post('/discussion/save_new_topic', params=params).follow()
+        url = thread.request.url
+
+        # Check that the newly created topic is the most recent in the rss feed
+        f = self.app.get('/discussion/feed.rss').body
+        f = feedparser.parse(f)
+        newest_entry = f['entries'][0]['summary_detail']['value'].split("</p>")[0].split("<p>")[-1]
+        assert newest_entry == 'XYZ'
+
+        # Reply to the newly created thread.
+        thread = self.app.get(url)
+        t = thread.html.find(
+            'div', {'class': 'row reply_post_form'}).find('form')
+        rep_url = t.get('action')
+        params = dict()
+        inputs = t.findAll('input')
+        for field in inputs:
+            if field.has_key('name'):
+                params[field['name']] = field.has_key(
+                    'value') and field['value'] or ''
+        params[t.find('textarea')['name']] = 'bbb'
+        self.app.post(str(rep_url), params=params)
+
+        # Check that reply matches the newest in the rss feed
+        f = self.app.get('/discussion/feed.rss').body
+        f = feedparser.parse(f)
+        newest_reply = f['entries'][0]['summary_detail']['value'].split("</p>")[0].split("<p>")[-1]
+        assert newest_reply == 'bbb'
+
+    def test_post_to_feed(self):
+        r = self.app.get('/discussion/create_topic/')
+        f = r.html.find(
+            'form', {'action': '/p/test/discussion/save_new_topic'})
+        params = dict()
+        inputs = f.findAll('input')
+        for field in inputs:
+            if field.has_key('name'):
+                params[field['name']] = field.has_key(
+                    'value') and field['value'] or ''
+        params[f.find('textarea')['name']] = 'XYZ'
+        params[f.find('select')['name']] = 'testforum'
+        params[f.find('input', {'style': 'width: 90%'})['name']] = 'AAAA'
+        self.app.post('/discussion/save_new_topic', params=params)
+
+        f = self.app.get('/discussion/feed.rss').body
+        f = feedparser.parse(f)
+        newest_entry = f['entries'][0]['summary_detail']['value'].split("</p>")[0].split("<p>")[-1]
+        assert newest_entry == 'XYZ'
+
     def test_thread_sticky(self):
         r = self.app.get('/discussion/create_topic/')
         f = r.html.find(