Fix NPE in PreEncodedHttpField constructor (#2488)
Which might happen when given `HttpHeader` is null. It might be null when most generic constructor `#PreEncodedHttpField(HttpHeader, String, String)` is invoked with a null argument or when `#PreEncodedHttpField(String, String)` constructor is used. Later is valuable for custom headers. NPE happens because of an attempt to call `HttpHeader#asString()` on a null argument. This commit fixes the problem by making encoders use specified header name, instead of trying to retrieve it from the `HttpHeader` object. Signed-off-by: lutovich <konstantin.lutovich@neo4j.com>
This commit is contained in:
parent
ed51c4a9e6
commit
25888f0d83
|
@ -101,7 +101,7 @@ public class PreEncodedHttpField extends HttpField
|
||||||
{
|
{
|
||||||
super(header,name, value);
|
super(header,name, value);
|
||||||
for (int i=0;i<__encoders.length;i++)
|
for (int i=0;i<__encoders.length;i++)
|
||||||
_encodedField[i]=__encoders[i].getEncodedField(header,header.asString(),value);
|
_encodedField[i]=__encoders[i].getEncodedField(header,name,value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PreEncodedHttpField(HttpHeader header,String value)
|
public PreEncodedHttpField(HttpHeader header,String value)
|
||||||
|
|
|
@ -21,6 +21,7 @@ package org.eclipse.jetty.http;
|
||||||
import static org.hamcrest.CoreMatchers.is;
|
import static org.hamcrest.CoreMatchers.is;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertNull;
|
||||||
import static org.junit.Assert.assertThat;
|
import static org.junit.Assert.assertThat;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
@ -181,4 +182,14 @@ public class HttpFieldTest
|
||||||
|
|
||||||
assertEquals("Accept: something\r\n",s);
|
assertEquals("Accept: something\r\n",s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCachedFieldWithHeaderName()
|
||||||
|
{
|
||||||
|
PreEncodedHttpField field = new PreEncodedHttpField("X-My-Custom-Header", "something");
|
||||||
|
|
||||||
|
assertNull(field.getHeader());
|
||||||
|
assertEquals("X-My-Custom-Header", field.getName());
|
||||||
|
assertEquals("something", field.getValue());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue