comparison src/goodjava/webserver/RequestParser.java @ 2170:a59d0bf68830 default tip

handle multiple cookie headers
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 17 Feb 2026 22:24:02 -0700
parents ffa02039a11a
children
comparison
equal deleted inserted replaced
2169:daa80cb2f0a2 2170:a59d0bf68830
1 package goodjava.webserver; 1 package goodjava.webserver;
2 2
3 import java.io.UnsupportedEncodingException; 3 import java.io.UnsupportedEncodingException;
4 import java.net.URLDecoder; 4 import java.net.URLDecoder;
5 import java.util.List; 5 import java.util.List;
6 import java.util.ArrayList;
7 import goodjava.logging.Logger; 6 import goodjava.logging.Logger;
8 import goodjava.logging.LoggerFactory; 7 import goodjava.logging.LoggerFactory;
9 import goodjava.parser.Parser; 8 import goodjava.parser.Parser;
10 import goodjava.parser.ParseException; 9 import goodjava.parser.ParseException;
11 10
162 } 161 }
163 } 162 }
164 163
165 164
166 private void parseCookies() throws ParseException { 165 private void parseCookies() throws ParseException {
167 String text = (String)request.headers.get("cookie"); 166 Object obj = request.headers.get("cookie");
168 if( text == null ) 167 if( obj == null )
169 return; 168 return;
169 if( obj instanceof List )
170 throw new ParseException(parser,"multiple cookie headers");
171 String text = (String)obj;
170 this.parser = new Parser(text); 172 this.parser = new Parser(text);
171 while(true) { 173 while(true) {
172 int start = parser.currentIndex(); 174 int start = parser.currentIndex();
173 while( parser.noneOf("=;") ); 175 while( parser.noneOf("=;") );
174 String name = urlDecode( parser.textFrom(start) ); 176 String name = urlDecode( parser.textFrom(start) );