Repository navigation
LDEV-6677 HTTP extension, the HTTP engine based on Apache HttpClient 5 - #1
Merged
Merged
Conversation
Implements HTTPClientEngine of the loader and registers it with the manifest attribute http-engine.
- luceeCoreVersion 9.0.0.279-ALPHA in both poms, the first 9.0 alpha on Maven Central with the HTTP engine interface (HTTPClientEngine); the manifest takes lucee-core-version from it - the module pom said Apache 2.0, the root pom and License.txt LGPL 2.1
…headers, own redirect loop, bounded TLS pools, no retry of POST - auth registry with Basic, Digest and NTLM, credentials scoped to the request host (not AuthScope(null,-1)), preemptive Basic only when preauth - proxy credentials scoped to proxy host and port, default proxy port 80 - redirects handled like the built-in engine (301/302/303 to GET, 307/308 keep method and body, max 50, location validated), credentials not sent to other hosts - pools keyed by a hash of client certificate/trust store settings (no passwords in the key), LRU with at most 64 pools, evicted pools closed when idle; no client and no evictor thread per request - TLS context from the loader (same trust store as the core), sslVerify off disables hostname verification - releaseConnections retires pools under the lock, closeIdleConnections closes expired, idle and retired pools - retry only idempotent methods after NoHttpResponseException, never on a status code - supports() only for the documented features - cookies without domain get the request host - user Content-Length header ignored, restricted headers (Host, Connection, Expect, Upgrade) sent as set - bodies streamed, files repeatable, a body on HEAD/TRACE/OPTIONS fails clearly - a connect timeout is a connection failure (status 0) like the built-in engine, not a 408
…only removed when decoded, content length without consuming the body
…d headers, redirects, cookies, retries and decoding against a recording server
…service, Lucee cfhttp tests (http, cfhttp,ssl) against the extension engine
…ding behaviour, lite lex convention
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
https://luceeserver.atlassian.net/browse/LDEV-6677
Core PR: lucee/Lucee#3262
What
lucee.commons.net.http.HTTPClientEngineof the loader with Apache HttpClient 5 (httpclient5, httpcore5, httpcore5-h2, slf4j-api, bundled as Maven dependencies) and registers it with the manifest attributehttp-engine.java.net.http) can not do: NTLM, restricted headers, connection pool and its statistics, the retry of a pooled connection the server closed, the redirect rules of Lucee 8.sslverify=false) comes fromHTTPUtil.createSSLContextof the core, so the certificates Lucee installed are trusted.Behaviour
Content-Transfer-Encodingfor multipart parts, some error messages. A connect time-out is reported as a connection failure (status 0), like before.Status
luceeCoreVersioninpom.xmland the test matrix in the workflow are still on the previous alpha, so CI can not pass before that release.tests/and thehttpsuite of the core pass with the extension installed.