@@ -858,6 +858,7 @@ private HttpResponse processResponse(ByteBuffer response, AsyncChannelWrapper ch
858858 int status = 0 ;
859859 boolean readStatus = false ;
860860 boolean readHeaders = false ;
861+ StringBuilder lineBuffer = new StringBuilder ();
861862 String line = null ;
862863 while (!readHeaders ) {
863864 // On entering loop buffer will be empty and at the start of a new
@@ -880,14 +881,13 @@ private HttpResponse processResponse(ByteBuffer response, AsyncChannelWrapper ch
880881 }
881882 response .flip ();
882883 while (response .hasRemaining () && !readHeaders ) {
883- if (line == null ) {
884- line = readLine (response );
885- } else {
886- line += readLine (response );
884+ if (readLine (response , lineBuffer )) {
885+ line = lineBuffer .toString ();
886+ lineBuffer = new StringBuilder ();
887887 }
888888 if ("\r \n " .equals (line )) {
889889 readHeaders = true ;
890- } else if (line .endsWith ("\r \n " )) {
890+ } else if (line != null && line .endsWith ("\r \n " )) {
891891 if (readStatus ) {
892892 parseHeaders (line , headers );
893893 } else {
@@ -937,20 +937,18 @@ private void parseHeaders(String line, Map<String,List<String>> headers) {
937937 values .add (headerValue );
938938 }
939939
940- private String readLine (ByteBuffer response ) {
940+ private boolean readLine (ByteBuffer response , StringBuilder sb ) {
941941 // All ISO-8859-1
942- StringBuilder sb = new StringBuilder ();
943-
944942 char c ;
945943 while (response .hasRemaining ()) {
946944 c = (char ) response .get ();
947945 sb .append (c );
948946 if (c == 10 ) {
949- break ;
947+ return true ;
950948 }
951949 }
952950
953- return sb . toString () ;
951+ return false ;
954952 }
955953
956954
0 commit comments