[Winstone-devel] winstone/src/java/winstone WinstoneOutputStream.java,1.10,1.11
Status: Beta
Brought to you by:
rickknowles
From: Rick K. <ric...@us...> - 2006-01-11 01:39:53
|
Update of /cvsroot/winstone/winstone/src/java/winstone In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16758/src/java/winstone Modified Files: WinstoneOutputStream.java Log Message: Converted output headers to use CR_LF instead of platform dependent println(). NOTE: I'm concerned about potential problems with double-byte character encodings in headers here. The spec kind of implies (by using the word OCTET), that it's in 8859-1, but until now it was using platform encoding. Please let me know of any breakages, or even explicit points in the spec where it says what the header encoding should be Index: WinstoneOutputStream.java =================================================================== RCS file: /cvsroot/winstone/winstone/src/java/winstone/WinstoneOutputStream.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** WinstoneOutputStream.java 9 Jan 2006 12:42:36 -0000 1.10 --- WinstoneOutputStream.java 11 Jan 2006 01:39:45 -0000 1.11 *************** *** 21,25 **** import java.io.IOException; import java.io.OutputStream; - import java.io.PrintStream; import java.util.Iterator; --- 21,24 ---- *************** *** 33,37 **** */ public class WinstoneOutputStream extends javax.servlet.ServletOutputStream { ! final int DEFAULT_BUFFER_SIZE = 8192; protected OutputStream outStream; protected int bufferSize; --- 32,37 ---- */ public class WinstoneOutputStream extends javax.servlet.ServletOutputStream { ! private static final int DEFAULT_BUFFER_SIZE = 8192; ! private static final byte[] CR_LF = "\r\n".getBytes(); protected OutputStream outStream; protected int bufferSize; *************** *** 120,127 **** Logger.log(Logger.DEBUG, Launcher.RESOURCES, "WinstoneOutputStream.CommittingOutputStream"); ! PrintStream headerStream = new PrintStream(this.outStream, true); ! String statusLine = this.owner.getProtocol() + " " ! + this.owner.getStatus(); ! headerStream.println(statusLine); Logger.log(Logger.FULL_DEBUG, Launcher.RESOURCES, "WinstoneOutputStream.ResponseStatus", statusLine); --- 120,126 ---- Logger.log(Logger.DEBUG, Launcher.RESOURCES, "WinstoneOutputStream.CommittingOutputStream"); ! String statusLine = this.owner.getProtocol() + " " + this.owner.getStatus(); ! this.outStream.write(statusLine.getBytes("8859_1")); ! this.outStream.write(CR_LF); Logger.log(Logger.FULL_DEBUG, Launcher.RESOURCES, "WinstoneOutputStream.ResponseStatus", statusLine); *************** *** 130,134 **** for (Iterator i = this.owner.getHeaders().iterator(); i.hasNext();) { String header = (String) i.next(); ! headerStream.println(header); Logger.log(Logger.FULL_DEBUG, Launcher.RESOURCES, "WinstoneOutputStream.Header", header); --- 129,134 ---- for (Iterator i = this.owner.getHeaders().iterator(); i.hasNext();) { String header = (String) i.next(); ! this.outStream.write(header.getBytes("8859_1")); ! this.outStream.write(CR_LF); Logger.log(Logger.FULL_DEBUG, Launcher.RESOURCES, "WinstoneOutputStream.Header", header); *************** *** 139,149 **** Cookie cookie = (Cookie) i.next(); String cookieText = this.owner.writeCookie(cookie); ! headerStream.println(cookieText); Logger.log(Logger.FULL_DEBUG, Launcher.RESOURCES, "WinstoneOutputStream.Header", cookieText); } } ! headerStream.println(); ! headerStream.flush(); // Logger.log(Logger.FULL_DEBUG, // Launcher.RESOURCES.getString("HttpProtocol.OutHeaders") + out.toString()); --- 139,150 ---- Cookie cookie = (Cookie) i.next(); String cookieText = this.owner.writeCookie(cookie); ! this.outStream.write(cookieText.getBytes("8859_1")); ! this.outStream.write(CR_LF); Logger.log(Logger.FULL_DEBUG, Launcher.RESOURCES, "WinstoneOutputStream.Header", cookieText); } } ! this.outStream.write(CR_LF); ! this.outStream.flush(); // Logger.log(Logger.FULL_DEBUG, // Launcher.RESOURCES.getString("HttpProtocol.OutHeaders") + out.toString()); |