Just mocked this up based on your descriptions.

A Jetty server using Jetty 9.2.13.v20150730
A servlet on "/mock/*" that has a doGet() and doPost() enabled.
Had the implementation of this servlet just respond what it got.

Using curl to access said servlet.

$ curl -vv http://127.0.0.1:2013/mock/127.0.0.1
* About to connect() to 127.0.0.1 port 2013 (#0)
*   Trying 127.0.0.1...
* Adding handle: conn: 0x11588d0
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x11588d0) send_pipe: 1, recv_pipe: 0
* Connected to 127.0.0.1 (127.0.0.1) port 2013 (#0)
> GET /mock/127.0.0.1 HTTP/1.1
> User-Agent: curl/7.32.0
> Host: 127.0.0.1:2013
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Wed, 12 Aug 2015 21:32:07 GMT
< Content-Type: text/plain; charset=ISO-8859-1
< Content-Length: 62
* Server Jetty(9.2.13.v20150730) is not blacklisted
< Server: Jetty(9.2.13.v20150730)
<
GET Request received for http://127.0.0.1:2013/mock/127.0.0.1
* Connection #0 to host 127.0.0.1 left intact
$

$ curl -vv -H "Content-Type: application/json" --data @si.json
http://127.0.0.1:2013/mock/127.0.0.1
* About to connect() to 127.0.0.1 port 2013 (#0)
*   Trying 127.0.0.1...
* Adding handle: conn: 0x12da920
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x12da920) send_pipe: 1, recv_pipe: 0
* Connected to 127.0.0.1 (127.0.0.1) port 2013 (#0)
> POST /mock/127.0.0.1 HTTP/1.1
> User-Agent: curl/7.32.0
> Host: 127.0.0.1:2013
> Accept: */*
> Content-Type: application/json
> Content-Length: 1103791
> Expect: 100-continue
>
< HTTP/1.1 200 OK
< Date: Wed, 12 Aug 2015 21:32:53 GMT
< Content-Type: text/plain; charset=ISO-8859-1
< Content-Length: 63
< Connection: close
* Server Jetty(9.2.z-SNAPSHOT) is not blacklisted
< Server: Jetty(9.2.z-SNAPSHOT)
<
POST Request received for http://127.0.0.1:2013/mock/127.0.0.1
* Closing connection 0

Can you use "-vv" on your curl line too?


Joakim Erdfelt / [email protected]

On Wed, Aug 12, 2015 at 2:06 PM, X Z <[email protected]> wrote:

> curl -H "Content-Type: application/json" --data @si.json
> http://127.0.0.1:2013/mock/127.0.0.1
>
> I also tried with "wget http://127.0.0.1:2013/available";
> <http://127.0.0.1:2013/available> which gave me same error code 400.
>
> The above HTTP GET/POST worked with Jetty 9.0 server.
>
> Thanks
> zhong
>
>
> ------------------------------
> *From:* [email protected] <[email protected]>
> on behalf of Joakim Erdfelt <[email protected]>
> *Sent:* Wednesday, August 12, 2015 4:53 PM
> *To:* JETTY user mailing list
> *Subject:* Re: [jetty-users] HTTP 400 status code returned after Jetty
> server upgraded from 9.0 to 9.2
>
> Can you capture the full POST request line and headers? and post it here?
> Would like to see what you are sending.
> From the logs, it appears that something with your specific POST request
> is tripping up the parser.
> Best guess, you have a header without a key. (a HTTP spec violation)
>
>
>
> Joakim Erdfelt / [email protected]
>
> On Wed, Aug 12, 2015 at 1:08 PM, X Z <[email protected]> wrote:
>
>> Hi,
>>
>>
>> I have upgraded the embedded Jetty server from 9.0 to latest 9.2 version.
>> The HTTP GET/POST requests return 400 code. I also saw this warning log:
>>
>> WARN  HttpParser:59 - badMessage:
>> java.lang.ArrayIndexOutOfBoundsException: 0 for
>> HttpChannelOverHttp@2e70eea7{r=0,c=false,a=IDLE,uri=-}
>>
>> Anyone has got the insight on how to fix the issue?
>>
>>
>> The detailed debugging messages are:
>>
>> 015-08-12 15:51:55 DEBUG SelectorManager:89 - Queued change
>> org.eclipse.jetty.io.SelectorManager$ManagedSelector$Accept@55c4b148
>>
>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Selector loop woken up
>> from select, 0/0 selected
>>
>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Running change
>> org.eclipse.jetty.io.SelectorManager$ManagedSelector$Accept@55c4b148
>>
>> 2015-08-12 15:51:55 DEBUG AbstractEndPoint:89 - onOpen
>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062
>> <->2013,Open,in,out,-,-,3/30000,null}{io=0,kio=0,kro=0}
>>
>> 2015-08-12 15:51:55 DEBUG IdleTimeout:89 - SelectChannelEndPoint@57f83f44
>> {/127.0.0.1:60062<->2013,Open,in,out,-,-,3/30000,null}{io=0,kio=0,kro=0}
>> idle timeout check, elapsed: 3 ms, remaining: 29997 ms
>>
>> 2015-08-12 15:51:55 DEBUG HttpChannel:89 - new
>> HttpChannelOverHttp@2e70eea7{r=0,c=false,a=IDLE,uri=-} ->
>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062
>> <->2013,Open,in,out,-,-,29/30000,null}{io=0,kio=0,kro=0},null,HttpChannelState@78442dc2{s=IDLE
>> i=true a=null}
>>
>> 2015-08-12 15:51:55 DEBUG HttpConnection:89 - New HTTP Connection
>> HttpConnection@45d14aaa{IDLE}
>>
>> 2015-08-12 15:51:55 DEBUG AbstractConnection:89 - onOpen
>> HttpConnection@45d14aaa{IDLE}
>>
>> 2015-08-12 15:51:55 DEBUG AbstractConnection:89 - fillInterested
>> HttpConnection@45d14aaa{IDLE}
>>
>> 2015-08-12 15:51:55 DEBUG AbstractConnection:89 - IDLE-->FILL_INTERESTED
>> HttpConnection@45d14aaa{FILL_INTERESTED}
>>
>> 2015-08-12 15:51:55 DEBUG SelectChannelEndPoint:89 - Local interests
>> updating 0 -> 1 for SelectChannelEndPoint@57f83f44{/127.0.0.1:60062
>> <->2013,Open,in,out,R,-,0/30000,HttpConnection}{io=1,kio=0,kro=0}
>>
>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Queued change
>> org.eclipse.jetty.io.SelectChannelEndPoint$1@320dce4f
>>
>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Created
>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062
>> <->2013,Open,in,out,R,-,1/30000,HttpConnection}{io=1,kio=0,kro=0}
>>
>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Running change
>> org.eclipse.jetty.io.SelectChannelEndPoint$1@320dce4f
>>
>> 2015-08-12 15:51:55 DEBUG SelectChannelEndPoint:89 - Key interests
>> updated 0 -> 1 on SelectChannelEndPoint@57f83f44{/127.0.0.1:60062
>> <->2013,Open,in,out,R,-,2/30000,HttpConnection}{io=1,kio=1,kro=0}
>>
>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Selector loop waiting on
>> select
>>
>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Selector loop woken up
>> from select, 1/1 selected
>>
>> 2015-08-12 15:51:55 DEBUG SelectChannelEndPoint:89 - Key interests
>> updated 1 -> 0 on SelectChannelEndPoint@57f83f44{/127.0.0.1:60062
>> <->2013,Open,in,out,R,-,2/30000,HttpConnection}{io=1,kio=0,kro=1}
>>
>> 2015-08-12 15:51:55 DEBUG SelectChannelEndPoint:89 - Local interests
>> updating 1 -> 0 for SelectChannelEndPoint@57f83f44{/127.0.0.1:60062
>> <->2013,Open,in,out,R,-,3/30000,HttpConnection}{io=0,kio=0,kro=1}
>>
>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Queued change
>> org.eclipse.jetty.io.SelectChannelEndPoint$1@320dce4f
>>
>> 2015-08-12 15:51:55 DEBUG AbstractConnection:89 -
>> FILL_INTERESTED-->FILLING HttpConnection@45d14aaa{FILLING}
>>
>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Running change
>> org.eclipse.jetty.io.SelectChannelEndPoint$1@320dce4f
>>
>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Selector loop waiting on
>> select
>>
>> 2015-08-12 15:51:55 DEBUG HttpConnection:89 - 
>> HttpConnection@45d14aaa{FILLING}
>> onFillable HttpChannelState@78442dc2{s=IDLE i=true a=null}
>>
>> 2015-08-12 15:51:55 DEBUG ChannelEndPoint:89 - filled 394
>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062
>> <->2013,Open,in,out,-,-,4/30000,HttpConnection}{io=0,kio=0,kro=1}
>>
>> 2015-08-12 15:51:55 DEBUG HttpParser:89 - parseNext s=START
>> HeapByteBuffer@2c5c9e4a[p=0,l=394,c=8192,r=394]={<<<POST
>> /mock/127.0....d":"127.0.0.1"}>>>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00}
>>
>> 2015-08-12 15:51:55 DEBUG HttpParser:89 - START --> SPACE1
>>
>> 2015-08-12 15:51:55 DEBUG HttpParser:89 - SPACE1 --> URI
>>
>> 2015-08-12 15:51:55 DEBUG HttpParser:89 - URI --> SPACE2
>>
>> 2015-08-12 15:51:55 DEBUG HttpParser:89 - SPACE2 --> REQUEST_VERSION
>>
>> 2015-08-12 15:51:55 DEBUG HttpParser:89 - REQUEST_VERSION --> HEADER
>>
>> 2015-08-12 15:51:55 WARN  HttpParser:59 - badMessage:
>> java.lang.ArrayIndexOutOfBoundsException: 0 for
>> HttpChannelOverHttp@2e70eea7{r=0,c=false,a=IDLE,uri=-}
>>
>> 2015-08-12 15:51:55 DEBUG HttpParser:105 -
>>
>> java.lang.ArrayIndexOutOfBoundsException: 0
>>
>> at org.eclipse.jetty.util.ArrayTernaryTrie.getBest(
>> ArrayTernaryTrie.java:374)
>>
>> at org.eclipse.jetty.util.ArrayTernaryTrie.getBest(
>> ArrayTernaryTrie.java:357)
>>
>> at org.eclipse.jetty.http.HttpParser.parseHeaders(HttpParser.java:1047)
>>
>> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:1257)
>>
>> at org.eclipse.jetty.server.HttpConnection.onFillable(
>> HttpConnection.java:250)
>>
>> at org.eclipse.jetty.io.AbstractConnection$2.run(
>> AbstractConnection.java:540)
>>
>> at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(
>> QueuedThreadPool.java:635)
>>
>> at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(
>> QueuedThreadPool.java:555)
>>
>> at java.lang.Thread.run(Thread.java:744)
>>
>> 2015-08-12 15:51:55 DEBUG HttpParser:89 - HEADER --> CLOSED
>>
>> 2015-08-12 15:51:55 DEBUG HttpChannelState:89 - 
>> HttpChannelState@78442dc2{s=IDLE
>> i=true a=null} handling IDLE
>>
>> 2015-08-12 15:51:55 DEBUG HttpConnection:89 -
>> org.eclipse.jetty.server.HttpConnection$SendCallback@4652a2dd[PROCESSING][i=ResponseInfo{HTTP/1.1
>> 400
>> null,0,false},cb=org.eclipse.jetty.server.HttpChannel$CommitCallback@5b427f3c]
>> generate: NEED_HEADER (null,null,true)@START
>>
>> 2015-08-12 15:51:55 DEBUG HttpConnection:89 -
>> org.eclipse.jetty.server.HttpConnection$SendCallback@4652a2dd[PROCESSING][i=ResponseInfo{HTTP/1.1
>> 400
>> null,0,false},cb=org.eclipse.jetty.server.HttpChannel$CommitCallback@5b427f3c]
>> generate: FLUSH ([p=0,l=99,c=8192,r=99],null,true)@COMPLETING
>>
>> 2015-08-12 15:51:55 DEBUG WriteFlusher:89 - write: 
>> WriteFlusher@5bd3465a{IDLE}
>> [HeapByteBuffer@4e26e633[p=0,l=99,c=8192,r=99]={<<<HTTP/1.1 400 Bad
>> ....v20150730)\r\n\r\n>>>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00}]
>>
>> 2015-08-12 15:51:55 DEBUG WriteFlusher:89 - update WriteFlusher@5bd3465a
>> {WRITING}:IDLE-->WRITING
>>
>> 2015-08-12 15:51:55 DEBUG ChannelEndPoint:89 - flushed 99
>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062
>> <->2013,Open,in,out,-,W,10/30000,HttpConnection}{io=0,kio=0,kro=1}
>>
>> 2015-08-12 15:51:55 DEBUG WriteFlusher:89 - update WriteFlusher@5bd3465a
>> {IDLE}:WRITING-->IDLE
>>
>> 2015-08-12 15:51:55 DEBUG HttpConnection:89 -
>> org.eclipse.jetty.server.HttpConnection$SendCallback@4652a2dd[PROCESSING][i=ResponseInfo{HTTP/1.1
>> 400
>> null,0,false},cb=org.eclipse.jetty.server.HttpChannel$CommitCallback@5b427f3c]
>> generate: SHUTDOWN_OUT ([p=99,l=99,c=8192,r=0],null,true)@END
>>
>> 2015-08-12 15:51:55 DEBUG HttpConnection:89 -
>> org.eclipse.jetty.server.HttpConnection$SendCallback@4652a2dd[PROCESSING][i=ResponseInfo{HTTP/1.1
>> 400
>> null,0,false},cb=org.eclipse.jetty.server.HttpChannel$CommitCallback@5b427f3c]
>> generate: DONE ([p=99,l=99,c=8192,r=0],null,true)@END
>>
>> 2015-08-12 15:51:55 DEBUG ChannelEndPoint:89 - oshut
>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062
>> <->2013,Open,in,out,-,-,1/30000,HttpConnection}{io=0,kio=0,kro=1}
>>
>> 2015-08-12 15:51:55 DEBUG HttpChannelState:89 - 
>> HttpChannelState@78442dc2{s=DISPATCHED
>> i=true a=null} unhandle DISPATCHED
>>
>> 2015-08-12 15:51:55 DEBUG ChannelEndPoint:89 - filled -1
>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062
>> <->2013,Open,in,OSHUT,-,-,1/30000,HttpConnection}{io=0,kio=0,kro=1}
>>
>> 2015-08-12 15:51:55 DEBUG ChannelEndPoint:89 - ishut
>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062
>> <->2013,Open,in,OSHUT,-,-,2/30000,HttpConnection}{io=0,kio=0,kro=1}
>>
>> 2015-08-12 15:51:55 DEBUG AbstractEndPoint:89 - onClose
>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062
>> <->2013,CLOSED,ISHUT,OSHUT,-,-,2/30000,HttpConnection}{io=0,kio=0,kro=1}
>>
>> 2015-08-12 15:51:55 DEBUG ChannelEndPoint:89 - close
>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062
>> <->2013,CLOSED,ISHUT,OSHUT,-,-,3/30000,HttpConnection}{io=0,kio=0,kro=1}
>>
>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Destroyed
>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062
>> <->2013,CLOSED,ISHUT,OSHUT,-,-,3/30000,HttpConnection}{io=0,kio=-1,kro=-1}
>>
>> 2015-08-12 15:51:55 DEBUG AbstractConnection:89 - onClose
>> HttpConnection@45d14aaa{FILLING}
>>
>> 2015-08-12 15:51:55 DEBUG AbstractEndPoint:89 - onClose
>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062
>> <->2013,CLOSED,ISHUT,OSHUT,-,-,4/30000,HttpConnection}{io=0,kio=-1,kro=-1}
>>
>> 2015-08-12 15:51:55 DEBUG HttpParser:89 - atEOF HttpParser{s=CLOSED,0 of
>> 0}
>>
>> 2015-08-12 15:51:55 DEBUG HttpParser:89 - parseNext s=CLOSED
>> HeapByteBuffer@4e26e633[p=0,l=0,c=8192,r=0]={<<<>>>HTTP/1.1 400 Bad
>> ...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00}
>>
>> 2015-08-12 15:51:55 DEBUG AbstractConnection:89 - FILLING-->IDLE
>> HttpConnection@45d14aaa{IDLE}
>>
>> _______________________________________________
>> jetty-users mailing list
>> [email protected]
>> To change your delivery options, retrieve your password, or unsubscribe
>> from this list, visit
>> https://dev.eclipse.org/mailman/listinfo/jetty-users
>>
>
>
> _______________________________________________
> jetty-users mailing list
> [email protected]
> To change your delivery options, retrieve your password, or unsubscribe
> from this list, visit
> https://dev.eclipse.org/mailman/listinfo/jetty-users
>
_______________________________________________
jetty-users mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users

Reply via email to