I'll see if I can upgrade my curl to your version (I'm older)

Are your requests going through an http proxy perchance?

and/or is your Jetty behind something else? (like apache httpd, haproxy,
nginx, etc ...)

Also, if you just run the jetty-distribution's demo-base and hit that with
your curl, does it also fail with response code 400?



Joakim Erdfelt / [email protected]

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

> Here is the details of http post request:
>
>
> * Hostname was NOT found in DNS cache
>
> *   Trying 127.0.0.1...
>
> * 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.37.1
>
> > Host: 127.0.0.1:2013
>
> > Accept: */*
>
> > Content-Type: application/json
>
> > Content-Length: 248
>
> >
>
> * upload completely sent off: 248 out of 248 bytes
>
> < HTTP/1.1 400 Bad Request
>
> < Content-Length: 0
>
> < Connection: close
>
> * Server Jetty(9.2.13.v20150730) is not blacklisted
>
> < Server: Jetty(9.2.13.v20150730)
>
> <
>
> * Closing connection 0
>
>
> Here is the details of http get request:
>
> * Hostname was NOT found in DNS cache
>
> *   Trying 127.0.0.1...
>
> * Connected to 127.0.0.1 (127.0.0.1) port 2013 (#0)
>
> > GET /available HTTP/1.1
>
> > User-Agent: curl/7.37.1
>
> > Host: 127.0.0.1:2013
>
> > Accept: */*
>
> >
>
> < HTTP/1.1 400 Bad Request
>
> < Content-Length: 0
>
> < Connection: close
>
> * Server Jetty(9.2.13.v20150730) is not blacklisted
>
> < Server: Jetty(9.2.13.v20150730)
>
> <
>
> * Closing connection 0
>
>
> Thanks
> zhong
> ------------------------------
> *From:* [email protected] <[email protected]>
> on behalf of Joakim Erdfelt <[email protected]>
> *Sent:* Wednesday, August 12, 2015 5:33 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
>
> 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
>
_______________________________________________
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