Index: /main/trunk/greenstone2/runtime-src/src/corba/corbaServer.mpp
===================================================================
--- /main/trunk/greenstone2/runtime-src/src/corba/corbaServer.mpp	(revision 24958)
+++ /main/trunk/greenstone2/runtime-src/src/corba/corbaServer.mpp	(revision 24959)
@@ -397,4 +397,30 @@
   }
 
+  void getRssItems (const struct corbatext_t &corbaCollect,
+		  const struct corbatext_t &corbaGsdlHome,
+		  const struct corbatext_t &corbaRssItems,
+		  enum corbaComError &corbaError)
+  {   
+    text_t collection;
+    text_t gsdlhome;
+    text_t rss_items;
+    comerror_t error = noError;
+    ofstream logout;
+
+    this->openLogfile("/etc/corbaout.txt", logout);
+
+    corbaconv_text_t::setCorbatext(collection,corbaCollect);
+    corbaconv_text_t::setCorbatext(gsdlhome,corbaGsdlHome);
+
+    // do actual operation
+    protocol->get_rss_items(collection, gsdlhome, rss_items, error, logout);
+    corbaconv_text_t::getCorbatext(rss_items,corbaRssItems);
+
+    // decode response
+    corbaError = (corbaComError) error;
+
+    logout.close();
+  }
+
   void collectionList(corbatext_tarray &corbalist, corbaComError &error)
   {
Index: /main/trunk/greenstone2/runtime-src/src/corba/corbaproto.h
===================================================================
--- /main/trunk/greenstone2/runtime-src/src/corba/corbaproto.h	(revision 24958)
+++ /main/trunk/greenstone2/runtime-src/src/corba/corbaproto.h	(revision 24959)
@@ -86,4 +86,12 @@
 			  InfoFilterOptionsResponse_t &response, 
 			  comerror_t &err, ostream &logout);
+
+  // returns the contents of a collection's rss-items.rdf file (generated by BasePlugout)
+  void get_rss_items (const text_t &collection, 
+		      const text_t &gsdlhome, 
+		      text_t &rss_items, 
+		      comerror_t &err, 
+		      ostream &logout);
+
   void filter (const text_t &collection,
 	       FilterRequest_t &request,
Index: /main/trunk/greenstone2/runtime-src/src/corba/corbaproto.mpp
===================================================================
--- /main/trunk/greenstone2/runtime-src/src/corba/corbaproto.mpp	(revision 24958)
+++ /main/trunk/greenstone2/runtime-src/src/corba/corbaproto.mpp	(revision 24959)
@@ -673,4 +673,36 @@
 }
 
+// returns the contents of a collection's rss-items.rdf file (generated by BasePlugout)
+void corbaproto::get_rss_items (const text_t &collection, 
+				const text_t &gsdlhome, 
+				text_t &rss_items, 
+				comerror_t &err, 
+				ostream &logout) {
+
+  corbatext_t     corbaCollection;
+  corbatext_t     corbaGsdlHome;
+  corbatext_t     corbaRssItems;
+  corbaComError   corbaError = corbaNoError;
+
+  // convert all the requisite structures into their CORBA form
+  corbaconv_text_t::getCorbatext(collection,corbaCollection);
+  corbaconv_text_t::getCorbatext(collection,corbaGsdlHome);
+  corbaconv_text_t::getCorbatext(collection,corbaRssItems);
+
+  // get the corba client reference
+  // corbaiface_var lclient = this->getCorbaClient(); // ****
+  corbaiface_var lclient = client;
+
+  // execute the corba transaction
+  lclient->get_rss_items (corbaCollection, corbaGsdlHome, corbaRssItems, corbaError);
+
+  // convert the response back to normal form
+  rss_items = corbaRssItems;
+
+  //  text_t rss_filename = filename_cat(gsdlhome,"collect",collection,"index","rss-items.rdf");
+  //if (!read_file(rss_filename,rss_items)) { // read contents of file rss_filename into the string rss_items
+  //  err = protocolError; // else an error occurred
+  //}
+}
 
 void corbaproto::filter (const text_t &collection,
Index: /main/trunk/greenstone2/runtime-src/src/protocol/nullproto.cpp
===================================================================
--- /main/trunk/greenstone2/runtime-src/src/protocol/nullproto.cpp	(revision 24958)
+++ /main/trunk/greenstone2/runtime-src/src/protocol/nullproto.cpp	(revision 24959)
@@ -30,4 +30,6 @@
 #include "browsefilter.h"
 
+#include "fileutil.h"
+// for read_file
 
 nullproto::nullproto() {
@@ -134,4 +136,20 @@
 }
 
+// returns the contents of a collection's rss-items.rdf file (generated by BasePlugout)
+void nullproto::get_rss_items (const text_t &collection, 
+				const text_t &gsdlhome, 
+				text_t &rss_items, 
+				comerror_t &err, 
+				ostream &logout) {
+
+  text_t rss_filename = filename_cat(gsdlhome,"collect",collection,"index","rss-items.rdf");
+  // read contents of file rss_filename into the string rss_items
+  if (read_file(rss_filename,rss_items)) { 
+    err = noError;
+  } else {
+    err = protocolError;
+  }
+}
+
 void nullproto::filter (const text_t &collection,
 			FilterRequest_t &request,
Index: /main/trunk/greenstone2/runtime-src/src/protocol/nullproto.h
===================================================================
--- /main/trunk/greenstone2/runtime-src/src/protocol/nullproto.h	(revision 24958)
+++ /main/trunk/greenstone2/runtime-src/src/protocol/nullproto.h	(revision 24959)
@@ -81,4 +81,12 @@
 			  InfoFilterOptionsResponse_t &response, 
 			  comerror_t &err, ostream &logout);
+
+  // returns the contents of a collection's rss-items.rdf file (generated by BasePlugout)
+  void get_rss_items (const text_t &collection, 
+		      const text_t &gsdlhome, 
+		      text_t &rss_items, 
+		      comerror_t &err, 
+		      ostream &logout);
+
   void filter (const text_t &collection,
 	       FilterRequest_t &request,
Index: /main/trunk/greenstone2/runtime-src/src/protocol/recptproto.cpp
===================================================================
--- /main/trunk/greenstone2/runtime-src/src/protocol/recptproto.cpp	(revision 24958)
+++ /main/trunk/greenstone2/runtime-src/src/protocol/recptproto.cpp	(revision 24959)
@@ -113,4 +113,13 @@
 }
 
+// returns the contents of a collection's rss-items.rdf file (generated by BasePlugout)
+void recptproto::get_rss_items (const text_t &/*collection*/,
+				const text_t &/*gsdlhome*/,
+				text_t &/*rss_items*/,
+				comerror_t &err,
+				ostream &/*logout*/) {
+  err = protocolError;
+}
+
 // filters (search or browse) a result set
 void recptproto::filter (const text_t &/*collection*/,
Index: /main/trunk/greenstone2/runtime-src/src/protocol/recptproto.h
===================================================================
--- /main/trunk/greenstone2/runtime-src/src/protocol/recptproto.h	(revision 24958)
+++ /main/trunk/greenstone2/runtime-src/src/protocol/recptproto.h	(revision 24959)
@@ -116,4 +116,11 @@
 				  InfoFilterOptionsResponse_t &response, 
 				  comerror_t &err, ostream &logout);
+
+  // returns the contents of a collection's rss-items.rdf file (generated by BasePlugout)
+  virtual void get_rss_items (const text_t &collection,
+			      const text_t &gsdlhome,
+			      text_t &rss_items,
+			      comerror_t &err,
+			      ostream &logout);
 
   // filters (search or browse) a result set and returns information
Index: /main/trunk/greenstone2/runtime-src/src/recpt/rssaction.cpp
===================================================================
--- /main/trunk/greenstone2/runtime-src/src/recpt/rssaction.cpp	(revision 24958)
+++ /main/trunk/greenstone2/runtime-src/src/recpt/rssaction.cpp	(revision 24959)
@@ -84,15 +84,9 @@
 }
 
-void rssaction::generate_rss_content(text_t& rss_filename, displayclass &disp, 
+void rssaction::generate_rss_content(text_t& rss_items, displayclass &disp, 
 				     outconvertclass &outconvert, ostream &textout, 
 				     ostream &logout)
 {
-  text_t rss_items;
-
-  if (read_file(rss_filename,rss_items)) {
-    textout << outconvert << disp << rss_items;
-  }
-
-
+  textout << outconvert << disp << rss_items;
 }
 
@@ -108,29 +102,31 @@
 
 
-
-
 bool rssaction::do_action (cgiargsclass &args, recptprotolistclass *protos, 
 			    browsermapclass * /*browsers*/, displayclass& disp, 
 			    outconvertclass &outconvert, ostream &textout, 
 			    ostream &logout) {
-  //bool wassuccess = false;
-  //comerror_t err;
- 
+  text_t rss_items;
+  bool success = false;
+  comerror_t err; 
 
-  /*
-  recptproto *collectproto = protos->getrecptproto (args["c"], logout);
-  if (!args["c"].empty() && (collectproto != NULL)) {
-    collectproto->ping (args["c"], wassuccess, err, logout);
-    if (err != noError) wassuccess = false; // a communication error
+  text_t &arg_c = args["c"];
+
+
+  if (!args["c"].empty()) {
+    recptproto* collectproto = protos->getrecptproto (arg_c, logout);    
+    if (collectproto != NULL) {
+      collectproto->get_rss_items (arg_c, gsdlhome, rss_items, err, logout);
+      if (err == noError) success = true; 
+      // else a communication error    
+    }
   }
-  */
-
-  text_t rss_filename = filename_cat(gsdlhome,"collect",args["c"],"index","rss-items.rdf");
 
   generate_rss_header(disp,outconvert,textout,logout);
-  generate_rss_content(rss_filename,disp,outconvert,textout,logout);
+  if(success) {
+    generate_rss_content(rss_items,disp,outconvert,textout,logout);
+  }
   generate_rss_footer(disp,outconvert,textout,logout);
 
-  return true;
+  return success;
 };
 
Index: /main/trunk/greenstone2/runtime-src/src/recpt/rssaction.h
===================================================================
--- /main/trunk/greenstone2/runtime-src/src/recpt/rssaction.h	(revision 24958)
+++ /main/trunk/greenstone2/runtime-src/src/recpt/rssaction.h	(revision 24959)
@@ -54,5 +54,5 @@
 			   outconvertclass &outconvert, ostream &textout, 
 			   ostream &logout);
-  void generate_rss_content(text_t& rss_filename, displayclass &disp, 
+  void generate_rss_content(text_t& rss_items, displayclass &disp, 
 		  outconvertclass &outconvert, ostream &textout, 
 		  ostream &logout);
