Index: NNTPArticleImpl.java
===================================================================
RCS file: /home/cvspublic/jakarta-james/src/java/org/apache/james/nntpserver/repository/NNTPArticleImpl.java,v
retrieving revision 1.5
diff -u -r1.5 NNTPArticleImpl.java
--- NNTPArticleImpl.java	8 Aug 2002 00:43:29 -0000	1.5
+++ NNTPArticleImpl.java	29 Aug 2002 20:35:05 -0000
@@ -84,6 +84,19 @@
         } catch(IOException ex) { throw new NNTPException(ex); }
     }
 
+// ---------------------------------------------------------------------
+// rfc2980: 2.8 XOVER
+// requires newline and tab to be converted to space
+//
+    private String cleanHeader(String field) {
+        StringBuffer sb=new StringBuffer((field==null?"":field));
+        for(int i=0; i<sb.length(); i++) {
+            char c=sb.charAt(i);
+            if( (c=='\n') || (c=='\t') ) sb.setCharAt(i, ' ');
+        }
+        return sb.toString();
+    }
+    
     public void writeOverview(PrintWriter prt) {
         try {
             FileInputStream fin = new FileInputStream(f);
@@ -97,14 +110,16 @@
             String references = hdr.getHeader("References",null);
             long byteCount = f.length();
             long lineCount = -1;
-            prt.print(articleNumber + "\t");
-            prt.print((subject==null?"":subject) + "\t");
-            prt.print((author==null?"":author) + "\t");
-            prt.print((date==null?"":date) + "\t");
-            prt.print((msgId==null?"":msgId) + "\t");
-            prt.print((references==null?"":references) + "\t");
-            prt.print(byteCount + "\t");
-            prt.println(lineCount + "");
+            StringBuffer line=new StringBuffer(128)
+                .append(articleNumber + "\t")
+                .append(cleanHeader(subject))    .append("\t")
+                .append(cleanHeader(author))     .append("\t")
+                .append(cleanHeader(date))       .append("\t")
+                .append(cleanHeader(msgId))      .append("\t")
+                .append(cleanHeader(references)) .append("\t")         
+                .append(byteCount + "\t")
+                .append(lineCount + "");
+            prt.println(line.toString());
         } catch(Exception ex) { throw new NNTPException(ex); }
     }
     public String getHeader(String header) {

