Commit Graph

436 Commits

Author SHA1 Message Date
Jesse McConnell 74a4077dad Add package-info.java files to all jetty packages. 2013-05-21 15:09:49 -05:00
Jesse McConnell cede990d41 Add package-info.java to all jetty packages 2013-05-21 15:09:49 -05:00
Simone Bordet 6a47e4456f 406015 - Query parameters and POST queries.
Fixed proxy case where the path is rewritten to be absolute.
2013-05-05 20:33:44 +02:00
Simone Bordet 7d5ac2918e 406015 - Query parameters and POST queries.
Reworked the way query parameters are handled, making it more
consistent between request.path(...) and request.param(...).

Removed the hardcoding of passing parameters as body in POSTs.
2013-05-05 18:47:43 +02:00
Simone Bordet c1d655775f 407135 - Unauthorized response causes retry loop.
Fixed by adding a conversation flag to check if the authentication has
been tried, and forward the 401 if the flag is found.
2013-05-03 18:28:30 +02:00
Greg Wilkins d351e0790a 406617 Spin in Request.recycle
Numerous code cleanups with the handling of early closes of requests, specially when the response has already been sent.
2013-05-03 15:15:03 +10:00
Simone Bordet f57a4a45a6 405551 - InputStreamResponseListener.await returns null when request fails.
Moved the success/failure logic to onComplete(), to be notified even if only the request fails.
2013-04-12 13:50:45 +02:00
Simone Bordet 120b8c9839 405044 - Query parameters lost for non GET or POST. 2013-04-05 23:20:19 +02:00
Simone Bordet 72219d016b 404610 - Reintroduce ability to disallow TLS renegotiation. 2013-04-04 17:11:01 +02:00
Simone Bordet b921ed13c0 400689 - Add support for Proxy authentication. 2013-03-29 13:21:27 +01:00
Simone Bordet 968b315926 404204 - Exception from inputstream cause hang or timeout.
In case InputStreamContentProvider threw an exception after
the request was committed, the connection was not shutdown
leaving the server waiting for more data and eventually idle timeout.
2013-03-26 09:28:20 +01:00
Simone Bordet 6a8049f126 Simplified connect Promise implementation. 2013-03-25 18:41:57 +01:00
Simone Bordet 07420547f9 Using Closeable instead of AutoCloseable. 2013-03-25 16:36:07 +01:00
Simone Bordet 679eeb7a7c Test for 404204 - Exception from inputstream cause hang or timeout. 2013-03-25 15:44:18 +01:00
Simone Bordet 6be028c040 402397 - InputStreamResponseListener early close inputStream cause hold lock. 2013-03-11 17:37:42 +01:00
Simone Bordet 37fd36b31c 402397 - InputStreamResponseListener early close inputStream cause hold lock. 2013-03-06 17:11:16 +01:00
Simone Bordet 7037bca94d Introduced Request.header(HttpHeader, String) to simplify code. 2013-03-04 17:05:18 +01:00
Simone Bordet 868458f980 402341 - Host with default port causes redirects loop.
Removed default port from the Host request header.
Although allowed by RFC 2616, seems that many server chokes it.
2013-03-04 16:33:57 +01:00
Simone Bordet 8d6a4c39df Better logging for the RedirectProtocolHandler. 2013-03-04 16:33:57 +01:00
Simone Bordet a1560bea21 402316 - HttpReceiver and null pointer exception.
The NPE was caused by (invalid) Set-Cookie headers without value.
A guard has been added to avoid the NPE.
2013-03-04 16:33:57 +01:00
Greg Wilkins 41952ebf1d 402075 Dont allocate the parser trie unless needed 2013-03-01 22:16:54 +11:00
Simone Bordet a252841561 401777 - InputStreamResponseListener CJK byte (>=128) cause EOF.
Fixed by adding & 0xFF when returning bytes as integers.
2013-02-26 15:36:48 +01:00
Simone Bordet 34d343e260 401651 - Abort request if maxRequestsQueuedPerDestination is reached. 2013-02-25 09:24:43 +01:00
Greg Wilkins 2d310ac82e 401642 Less verbose INFOs 2013-02-25 14:42:30 +11:00
Simone Bordet 8418acdae4 401414 - Hostname verification fails.
Now using host name instead of host address to create SSLEngines.
2013-02-21 21:08:59 +01:00
Simone Bordet 3ffbb586db 388103 - Add API for tracking down upload progress.
Introduced Request.ContentListener, invoked after the content has been sent.
2013-02-20 17:56:21 +01:00
Simone Bordet 29d779778e Reduced object creation by caching the conversation response listeners. 2013-02-20 15:42:01 +01:00
Simone Bordet 94a344289b 400849 - Conversation hangs if non-first request fails when queued.
Taken the chance to revisit the lifecycle of HttpConversation and HttpExchange
(now they are created as soon as the request is sent, before they were created
when the exchange was associated to the connection).
This change made the conversation listeners available as soon as the request
was sent, so that it was simpler to notify the right listeners also in case of failure
of a non-first request (which fixes the bug).
2013-02-15 18:45:29 +01:00
Simone Bordet 651105c73b 400848 - Redirect fails with non-encoded location URIs. 2013-02-14 21:37:30 +01:00
Simone Bordet df56bd3c27 400014 - Http async client DNS performance.
Introduced SocketAddressResolver to perform DNS resolution in a separate thread,
and updated HttpClient to make use of it.
2013-02-14 21:37:29 +01:00
Simone Bordet dd96cc50b2 400734 - NPE for redirects with relative location.
Now resolving locations against original URL if it is relative.
2013-02-14 21:37:29 +01:00
Simone Bordet 6649b890a7 400434 - Add support for an OutputStream ContentProvider. 2013-02-13 10:25:25 +01:00
Thomas Becker 6f91d6a590 Merge branch 'spdy_http_proxy' 2013-01-31 15:13:53 +01:00
Thomas Becker cd30ac104d interims 2013-01-29 09:17:32 +01:00
Simone Bordet ec254cd165 399324 - HttpClient does not handle correctly UnresolvedAddressException. 2013-01-28 23:45:44 +01:00
Simone Bordet 9ba1069383 399319 - Request.getURI() may return negative ports. 2013-01-28 23:45:44 +01:00
Simone Bordet 7c53c317ae Fixed DeferredContentProvider race condition.
HttpSender was setting the listener for asynchronous content before its own state was properly setup.
This was causing race conditions, where a thread could notify HttpSender and find null data members causing later NPEs.

Now the listener is set after the state is setup, removing the race condition.
2013-01-28 17:32:22 +01:00
Thomas Becker 80b44f9940 interims 2013-01-28 15:27:03 +01:00
Thomas Becker 1f6d058b20 intermittent commit 2013-01-28 12:18:30 +01:00
Simone Bordet b2f3852fb3 398872 - SslConnection should not be notified of idle timeouts. First solution. 2013-01-24 10:29:27 +01:00
Jan Bartel fe48239b34 Merge remote-tracking branch 'origin/jetty-7' into jetty-8 2013-01-21 16:54:06 +11:00
Jan Bartel 91a94f8213 362226 HttpConnection "wait" call causes thread resource exhaustion 2013-01-21 16:43:57 +11:00
Simone Bordet 44e64aa309 Removed TimedResponseListener, since the timeout mechanism is now
provided by Request.timeout(...) for both blocking and asynchronous send().
2013-01-17 16:15:34 +01:00
Simone Bordet b3f6739d51 Completed the implementation of DeferredContentProvider.
DeferredContentProvider is used to provide content after
Request.send(...) is called, a use case that is useful
in SPDY-to-HTTP proxies, where content arrives in SPDY
data frames at later times than the headers.
2013-01-17 12:53:39 +01:00
Simone Bordet 386fafe790 Avoid copying sensitive headers when copying a Request. 2013-01-17 12:53:39 +01:00
Jesse McConnell e1c516c7d1 merge from jetty-8 and update license blocks. 2013-01-11 17:04:53 -06:00
Jesse McConnell 863944873d merge from 7 and update license blocks for 2013 2013-01-11 15:01:16 -06:00
Jesse McConnell a4dbb5823c update license blocks for 2013 2013-01-11 14:57:51 -06:00
Greg Wilkins 27c31fb403 jetty-9 organised imports. Cleaned up some TODOs 2013-01-11 16:37:32 +11:00
Simone Bordet b1882a3258 Fixed logging level: from into to debug. 2013-01-10 10:47:25 +01:00
Simone Bordet 57c5803cd8 Changed the default scheduler to ScheduledExecutorScheduler to reduce GC pressure. 2013-01-10 10:26:40 +01:00
Simone Bordet a374ac0cc8 Improved logging of removed connections. 2013-01-10 09:40:21 +01:00
Simone Bordet 55d8088f05 Made HttpDestination to use BlockingArrayQueue (that can grow) instead of
ArrayBlockingQueue, which allocates upfront memory even if it does not use it.
2012-12-21 17:13:07 +01:00
Simone Bordet b6e4f98cf7 Performance improvements to HTTP client after profiling session.
The profiling suggested to reduce the number of unneeded allocations
and this required a couple of API changes.
2012-12-19 16:27:20 +01:00
Simone Bordet c9f4513a89 Reworked HTTP client API, removing usage of Future. 2012-12-19 16:27:20 +01:00
Simone Bordet 58dff061e1 394552 - HEAD requests don't work for jetty-client.
Added a missing call to HttpParser.setHeadResponse()
to inform the parser that it is a response to a HEAD request.
2012-12-17 11:37:40 +01:00
Jan Bartel 43c9bba86d 393158 java.lang.IllegalStateException when sending an empty InputStream 2012-12-17 18:40:50 +11:00
Simone Bordet 2c583ccda4 Introduced Request.CommitListener to separate the pre-commit request event from the commit request event. 2012-12-13 21:01:58 +01:00
Simone Bordet 0682af3502 Introduced Response.HeaderListener to allow applications to control processing of headers. 2012-12-13 17:15:34 +01:00
Simone Bordet 5f17509a18 Fixed handling of IPv6 destinations. 2012-12-12 14:54:58 +01:00
Simone Bordet 8d0c90eef9 Recreating the CookieManager if the CookieStore is changed. 2012-12-12 14:54:22 +01:00
Simone Bordet b9b16529d5 Removed jetty-client's CookieStore to use java.net.CookieStore instead.
This unifies the usage of CookieStores between jetty-client and jetty-websocket, and hopefully other modules as well.
2012-12-12 10:18:18 +01:00
Simone Bordet fb233dbecb Exposed the Request passed to the constructor via a getter.
Subclasses can therefore pass a request built on-the-fly to the super constructor
and are able to get a reference to it.
2012-12-12 10:18:18 +01:00
Simone Bordet d6bd9df93a Aborting the response if the content length limit is reached. 2012-12-07 16:42:25 +01:00
Simone Bordet 97a2f3328f Added CookieStore.removeCookie() method and implementation. 2012-12-07 16:42:25 +01:00
Greg Wilkins 3e151901bf jetty-9 Use public HttpField 2012-12-08 01:41:01 +11:00
Greg Wilkins a20d984d30 jetty-9 Added Trie for cached string lookup. HttpFields does not use StringMap 2012-12-08 01:41:00 +11:00
Simone Bordet b2e878a7e8 + Introduced Request.content(ContentProvider content, String contentType)
+ Introduced a new renamings to clarify concepts
+ Vastly improved Javadocs.
2012-12-04 16:18:09 +01:00
Simone Bordet 6756cc7e75 Fixed compilation problem. 2012-11-23 14:13:07 +01:00
Simone Bordet b7cdb29a14 Simplified connection establishment code. 2012-11-23 13:16:32 +01:00
Simone Bordet 9f86d36d6c Fixed infinite recursion due to method renaming. 2012-11-23 12:18:52 +11:00
Simone Bordet b2c03b04f1 Made jetty-client module compile. 2012-11-23 12:18:51 +11:00
Greg Wilkins 7737dc8c76 394854 Implemented Promise 2012-11-23 12:18:51 +11:00
Simone Bordet 7771b6e27b Added constructor to specify the max length. 2012-11-20 15:44:46 +01:00
Simone Bordet e4cbb94ed6 Changed the read logic.
Before, if the stream had no content, InputStreamContentProvider's iterator
hasNext() was returning true, and next() was returning an empty buffer,
because the read was performed in next() and it was not possible to know
before reading whether the stream had content or was already at EOF.

Now the reads are performed in hasNext(), so that it is possible to return
immediately whether the stream is at EOF or not.
This solves a problem with ProxyServlet, where GET requests with no
content indication were proxied to the upstream server as GET requests
with chunked content, which in most cases were not understood by servers.
2012-11-14 12:12:29 +01:00
Simone Bordet 6ef0f415f0 Centralized defaulting of the port, from -1 to 80 or 443 depending on the scheme. 2012-11-14 12:12:29 +01:00
Simone Bordet ba40f7897d Completed port of ConnectHandler and ProxyServlet implementations. 2012-11-13 15:35:51 +01:00
Simone Bordet 9abc3988fb B64 coding and decoding now throws the unchecked UnsupportedCharsetException
rather than the checked UnsupportedEncodingException.
2012-11-13 11:29:54 +01:00
Simone Bordet 19e856fa7b Fixed cookie lookup in case of children paths. 2012-11-07 20:13:53 +01:00
Simone Bordet 28fd4cceac Implemented proxy functionalities for both client and server. 2012-11-07 20:13:53 +01:00
Greg Wilkins 52464a5ba6 Merge remote-tracking branch 'origin/jetty-8'
Conflicts:
	jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationParser.java
	jetty-annotations/src/main/java/org/eclipse/jetty/annotations/ResourceAnnotationHandler.java
	jetty-client/src/test/java/org/eclipse/jetty/client/SslHttpExchangeTest.java
	jetty-client/src/test/java/org/eclipse/jetty/client/SslSecurityListenerTest.java
	jetty-deploy/src/main/java/org/eclipse/jetty/deploy/WebAppDeployer.java
	jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/ContextProvider.java
	jetty-http/src/main/resources/org/eclipse/jetty/http/mime.properties
	jetty-http/src/test/java/org/eclipse/jetty/http/HttpFieldsTest.java
	jetty-io/src/main/java/org/eclipse/jetty/io/nio/SelectChannelEndPoint.java
	jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java
	jetty-jmx/src/main/java/org/eclipse/jetty/jmx/ObjectMBean.java
	jetty-overlay-deployer/src/main/java/org/eclipse/jetty/overlays/OverlayedAppProvider.java
	jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/Injection.java
	jetty-plus/src/main/java/org/eclipse/jetty/plus/security/DataSourceLoginService.java
	jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ProxyServlet.java
	jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/ProxyRule.java
	jetty-security/src/main/java/org/eclipse/jetty/security/authentication/FormAuthenticator.java
	jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionIdManager.java
	jetty-spdy/spdy-http-server/src/main/java/org/eclipse/jetty/spdy/server/proxy/ProxyHTTPSPDYConnection.java
	jetty-spdy/spdy-jetty-http/src/main/java/org/eclipse/jetty/spdy/http/ServerHTTPSPDYAsyncConnection.java
	jetty-start/src/main/java/org/eclipse/jetty/start/Main.java
	jetty-util/src/main/java/org/eclipse/jetty/util/Fields.java
	jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketClientFactory.java
	jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionRFC6455.java
	jetty-websocket/src/test/java/org/eclipse/jetty/websocket/WebSocketClientTest.java
	jetty-websocket/src/test/java/org/eclipse/jetty/websocket/WebSocketMessageRFC6455Test.java
	test-jetty-nested/src/main/java/org/eclipse/jetty/nested/Dump.java
	test-jetty-webapp/src/main/java/com/acme/Dump.java
2012-11-02 14:08:05 +11:00
Simone Bordet 62f8e13397 HTTP client: renamed Request.aborted() to Request.isAborted() to comply with the naming convention. 2012-10-31 13:21:15 +01:00
Simone Bordet b3c1accab9 HTTP client: fixed bug in redirects: the new host was overwritten with the old one. 2012-10-30 22:37:25 +01:00
Simone Bordet 0d762bcdbc HTTP client: refactored response listeners to support lambdas. 2012-10-30 19:22:29 +01:00
Simone Bordet 8d51961516 HTTP client: refactored request listeners to support lambdas. 2012-10-30 19:22:29 +01:00
Simone Bordet 33d97b8dd4 HTTP client: refactored "last exchange" concept out of HttpConversation into HttpExchange. 2012-10-30 12:56:21 +01:00
Simone Bordet ebb76ecfb9 392959 - Review HttpClient.getConversation(long).
Modified to HttpClient.getConversation(long, boolean) in order
to specify whether the conversation must be created or not.
2012-10-30 12:15:21 +01:00
Simone Bordet 1173916da1 HTTP client: renamed ResponseListener.Timed to Schedulable. 2012-10-30 12:15:21 +01:00
Simone Bordet 605b0360e1 HTTP client: reviewed API.
The API were inconsistent: sometimes using the C format for getters and setters
(e.g. String host(), void host(String)), sometimes using the JavaBeans format.

Now the API stick with the JavaBean format apart the "fluent" API in Request,
that is in the fluent format (i.e. C setter format, but returning this instead of void).
2012-10-26 23:42:18 +02:00
Simone Bordet 5e7f6988e4 HTTP client: introduced InputStreamContentProvider. 2012-10-26 17:40:28 +02:00
Simone Bordet b0306adf8d HTTP client: fixed bug in case of connection failure:
requests may have stayed queued and never notified of a connection failure
if their number exceeded the max connection per address value.
2012-10-26 14:57:06 +02:00
Simone Bordet 58e8ff8fbf #392733 - Implement a total timeout for asynchronous sends.
Reworked the implementation.
Instead of adding another method for asynchronous sends with
timeout parameters, we now use a TimedResponseListener utility
class, that holds the timeout information.
2012-10-26 14:57:06 +02:00
Simone Bordet e2a988f8fc HTTP client: tests on external synchronization. 2012-10-26 14:57:06 +02:00
Simone Bordet 975a20271f #392733 - Implement a total timeout for asynchronous sends. 2012-10-24 21:36:40 +02:00
Simone Bordet b6bf6899a9 HTTP client: improved request abort handling in case of conversations. 2012-10-23 11:02:50 +02:00
Simone Bordet 8635792507 HTTP client: better implementation for request/response abort. 2012-10-22 23:33:41 +02:00
Thomas Becker 8c3642754e 392470: Fix problem in suspend, expire cycle when HttpChannel.run() is called multiple times (happens for SPDY). Add test cases. Remove unused argument from HttpHandler.messageComplete() interface and it's implementations. 2012-10-19 18:17:29 +02:00
Simone Bordet 7e30c4ac20 jetty-9: HTTP client: fixed problem when using default ports such as 80 or 443. 2012-10-12 15:03:14 +02:00
Simone Bordet 6159d6f268 jetty-9: HTTP client: fixed problem when idle connections were closed remotely: the local connection was not closed. 2012-10-12 14:58:21 +02:00
Simone Bordet 707acbeed7 jetty-9: HTTP client: better logging. 2012-10-12 14:58:21 +02:00