RC-Paves3-build / plovr

Automatically exported from code.google.com/p/plovr
0 stars 0 forks source link

exception in ViewFileHandler for utf-8 input #92

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
What steps will reproduce the problem?
1. Put some extended utf-8 character, i.e. © in some of your js files.
2. navigat plovr to /view?id=..&name=.. 

What is the expected output? What do you see instead?

the following exception is caused but not properly setting the content-length 
(string.length() is not the length in bytes) in ViewFileHandler

SEVERE: Error during GET request to /view?id=dev&name=...
java.io.IOException: too many bytes to write to stream
 at sun.net.httpserver.FixedLengthOutputStream.write(FixedLengthOutputStream.java:76)
 at sun.net.httpserver.PlaceholderOutputStream.write(ExchangeImpl.java:444)
 at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
 at sun.nio.cs.StreamEncoder.implClose(StreamEncoder.java:316)
 at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:149)
 at java.io.OutputStreamWriter.close(OutputStreamWriter.java:233)
 at org.plovr.ViewFileHandler.doGet(ViewFileHandler.java:70)
 at org.plovr.AbstractGetHandler.handle(AbstractGetHandler.java:85)
 at org.plovr.CompilationServer$1.handle(CompilationServer.java:124)
 at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:77)
 at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:83)
 at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:80)
 at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:677)
 at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:77)
 at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:649)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
 at java.lang.Thread.run(Thread.java:745)

What version of the product are you using? On what operating system?
any, linux

Please provide any additional information below.
this is similar to 
https://code.google.com/p/plovr/issues/detail?id=11

and can be patched like this

diff -r 4df6a0e20e67 src/org/plovr/ViewFileHandler.java
--- a/src/org/plovr/ViewFileHandler.java        Mon Jul 01 20:39:48 2013 -0700
+++ b/src/org/plovr/ViewFileHandler.java        Wed May 14 13:39:34 2014 +0200
@@ -5,6 +5,7 @@
 import java.io.Writer;
 import java.util.Set;

+import com.google.common.base.Charsets;
 import com.google.common.io.Resources;
 import com.google.template.soy.SoyFileSet;
 import com.google.template.soy.data.SoyListData;
@@ -62,10 +63,10 @@
     // TODO(bolinfest): Support ctrl+L to prompt for a line number to navigate to.

     Headers responseHeaders = exchange.getResponseHeaders();
-    responseHeaders.set("Content-Type", "text/html");
-    exchange.sendResponseHeaders(200, html.length());
+    responseHeaders.set("Content-Type", "text/html; charset=UTF-8");
+    exchange.sendResponseHeaders(200, html.getBytes(Charsets.UTF_8).length);

-    Writer responseBody = new OutputStreamWriter(exchange.getResponseBody());
+    Writer responseBody = new OutputStreamWriter(exchange.getResponseBody(), 
Charsets.UTF_8);
     responseBody.write(html);
     responseBody.close();
   }

Original issue reported on code.google.com by petr...@siddhadev.com on 14 May 2014 at 11:41

Attachments: