DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9198>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9198 First line feed in text parameters lost Summary: First line feed in text parameters lost Product: Struts Version: 1.1 Beta 1 Platform: PC OS/Version: Linux Status: NEW Severity: Normal Priority: Other Component: File Upload AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] After moving from Struts 1.0 to Struts 1.1 b1, I encountered the following problem: When I enter text into "textarea" fields in forms which use enctype="multipart/form-data", because they are also used for file upload, the first line feed I have entered gets lost. At first I supposed a browser bug, but then I realized, that this phenomenon doesn't appear for forms which don't use enctype="multipart/form-data". Since I couldn't find anything about this problem in the mailing lists and existing bug reports, I decided to go on searching the source code. In org.apache.struts.upload.MultipartBoundaryInputStream#readElementHeaders() I found that the line feed was dismissed by calling resetCrlf() in line 359. It seems to me that this call is only needed in skipCurrentLineIfBlank(), if the current line is blank. I applied the following patch and everything worked fine for me: Index: src/share/org/apache/struts/upload/MultipartBoundaryInputStream.java =================================================================== RCS file: /home/cvspublic/jakarta- struts/src/share/org/apache/struts/upload/MultipartBoundaryInputStream.java,v retrieving revision 1.1 diff -u -r1.1 MultipartBoundaryInputStream.java --- src/share/org/apache/struts/upload/MultipartBoundaryInputStream.java 6 Mar 2002 19:44:07 -0000 1.1 +++ src/share/org/apache/struts/upload/MultipartBoundaryInputStream.java 17 May 2002 09:54:58 -0000 @@ -356,7 +356,6 @@ readContentDisposition(); resetCrlf(); boolean hadContentType = readContentType(); - resetCrlf(); if (hadContentType) { skipCurrentLineIfBlank(); @@ -514,7 +513,11 @@ private final void skipCurrentLineIfBlank() throws IOException { boolean fill = false; - if (this.lineLength == 1) + if (this.lineLength == 0) + { + fill = true; + } + else if (this.lineLength == 1) { if (this.line[0] == NEWLINE_BYTE) { @@ -530,6 +533,7 @@ } if (fill && !this.endOfStream) { + resetCrlf(); fillLine(); } } I don't know enough about RFC1867 however, to be sure, the behaviour I produced is the desired one for this class. I hope the proposed patch is useful somehow. Thanks for considering my problem. Alex. -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>