seguin 01/05/17 16:55:34 Modified: jk/src/java/org/apache/ajp Ajp13.java jk/src/java/org/apache/ajp/test TestAjp13.java jk/src/java/org/apache/ajp/tomcat4 Ajp13Response.java Log: put sendHeaders method that use MimeHeaders back Revision Changes Path 1.3 +47 -0 jakarta-tomcat-connectors/jk/src/java/org/apache/ajp/Ajp13.java Index: Ajp13.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/src/java/org/apache/ajp/Ajp13.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Ajp13.java 2001/05/16 23:23:30 1.2 +++ Ajp13.java 2001/05/17 23:55:32 1.3 @@ -69,6 +69,7 @@ import org.apache.tomcat.util.buf.MessageBytes; import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.http.MimeHeaders; +import org.apache.tomcat.util.http.HttpMessages; /** * Represents a single, persistent connection between the web server and @@ -609,6 +610,52 @@ outBuf.end(); send(outBuf); } + + /** + * Send the HTTP headers back to the web server and on to the browser. + * + * @param status The HTTP status code to send. + * @param headers The set of all headers. + */ + public void sendHeaders(int status, MimeHeaders headers) + throws IOException { + sendHeaders(status, HttpMessages.getMessage(status), headers); + } + + /** + * Send the HTTP headers back to the web server and on to the browser. + * + * @param status The HTTP status code to send. + * @param statusMessage the HTTP status message to send. + * @param headers The set of all headers. + */ + public void sendHeaders(int status, String statusMessage, MimeHeaders headers) + throws IOException { + // XXX if more headers that MAX_SIZE, send 2 packets! + + outBuf.reset(); + outBuf.appendByte(JK_AJP13_SEND_HEADERS); + outBuf.appendInt(status); + + outBuf.appendString(statusMessage); + + int numHeaders = headers.size(); + outBuf.appendInt(numHeaders); + + for( int i=0 ; i < numHeaders ; i++ ) { + String headerName = headers.getName(i).toString(); + int sc = headerNameToSc(headerName); + if(-1 != sc) { + outBuf.appendInt(sc); + } else { + outBuf.appendString(headerName); + } + outBuf.appendString(headers.getValue(i).toString() ); + } + + outBuf.end(); + send(outBuf); + } /** * Translate an HTTP response header name to an integer code if 1.2 +9 -6 jakarta-tomcat-connectors/jk/src/java/org/apache/ajp/test/TestAjp13.java Index: TestAjp13.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/src/java/org/apache/ajp/test/TestAjp13.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- TestAjp13.java 2001/05/15 15:22:36 1.1 +++ TestAjp13.java 2001/05/17 23:55:33 1.2 @@ -1,6 +1,8 @@ package org.apache.ajp.test; import org.apache.ajp.*; +import org.apache.tomcat.util.http.*; + import java.io.*; import java.net.*; import java.util.*; @@ -12,6 +14,7 @@ System.out.println("TestAjp13 running..."); Socket socket = server.accept(); Ajp13 ajp13 = new Ajp13(); + MimeHeaders headers = new MimeHeaders(); AjpRequest request = new AjpRequest(); ajp13.setSocket(socket); @@ -47,12 +50,11 @@ System.getProperty("line.separator") + request.toString() + "</pre></body></html>"; - - ajp13.beginSendHeaders(200, "OK", 3); - ajp13.sendHeader("content-type", "text/html"); - ajp13.sendHeader("content-length", String.valueOf(message.length())); - ajp13.sendHeader("my-header", "my value"); - ajp13.endSendHeaders(); + + headers.addValue("content-type").setString( "text/html"); + headers.addValue("content-length").setInt(message.length()); + headers.addValue("my-header").setString( "my value"); + ajp13.sendHeaders(200, headers); byte[] b = message.getBytes(); ajp13.doWrite(b, 0, b.length); @@ -60,6 +62,7 @@ ajp13.finish(); request.recycle(); + headers.recycle(); } try { 1.3 +3 -0 jakarta-tomcat-connectors/jk/src/java/org/apache/ajp/tomcat4/Ajp13Response.java Index: Ajp13Response.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/src/java/org/apache/ajp/tomcat4/Ajp13Response.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Ajp13Response.java 2001/05/15 15:22:51 1.2 +++ Ajp13Response.java 2001/05/17 23:55:33 1.3 @@ -71,12 +71,14 @@ import org.apache.catalina.util.CookieTools; import org.apache.ajp.Ajp13; +import org.apache.tomcat.util.http.MimeHeaders; public class Ajp13Response extends HttpResponseBase { private Ajp13 ajp13; private boolean finished = false; private boolean headersSent = false; + private MimeHeaders headers = new MimeHeaders(); private StringBuffer cookieValue = new StringBuffer(); String getStatusMessage() { @@ -87,6 +89,7 @@ super.recycle(); this.finished = false; this.headersSent = false; + this.headers.recycle(); } protected void sendHeaders() throws IOException {