[
https://issues.apache.org/jira/browse/HTTPCORE-766?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17847327#comment-17847327
]
Erik Wramner commented on HTTPCORE-766:
---------------------------------------
Fair enough on both accounts.
> Serve same content regardless of http authority (RequestHandlerRegistry)
> ------------------------------------------------------------------------
>
> Key: HTTPCORE-766
> URL: https://issues.apache.org/jira/browse/HTTPCORE-766
> Project: HttpComponents HttpCore
> Issue Type: Improvement
> Components: HttpCore
> Affects Versions: 5.2.4, 5.3-alpha1, 5.3-alpha2
> Reporter: Erik Wramner
> Priority: Minor
> Labels: easyfix
> Original Estimate: 4h
> Remaining Estimate: 4h
>
> I need to serve the same content on all interfaces and I don't know the IP
> addresses and host names in advance. Think of it as a classic HTTP server
> without virtual host support: all requests get to the same set of handlers.
> Unfortunately, ServerBootstrap installs RequestHandlerRegistry, which uses
> one primary LookupRegistry for a canonical host name and localhost and a map
> with other registries keyed by name. If a client connects with an unknown
> name, no handler is found and the server responds with 421.
> There are several possible solutions here:
> # Modify RequestHandlerRegistry to use the primary registry if no other
> registry is found. As I recall, that was what Apache did by default. Then it
> is still possible to register new rules for virtual hosts, but the primary is
> fallback when no name matches. This could also be configurable on/off.
> # Add new PrimaryOnlyRequestHandlerRegistry that has no support for virtual
> hosts and always uses the primary.
> # Don't fix this in the code, but make it easier for me to fix by making
> getPatternMatcher protected instead of private.
> In the two last cases we run into another problem: ServerBootstrap has
> private members without getters, final methods that cannot be overridden and
> creates RequestHandlerRegistry with new in a long create method. This is the
> problem that was solved in HTTPCORE-570 for another class. It makes it hard
> to extend the class, it must basically be rewritten.
> I would propose opening up ServerBootstrap with getters or by making the
> fields protected. I would also like to extract the RequestHandlerRegistry
> creation to a protected method that can be overridden. Alternatively, we can
> add a setter and allow the calling code to prepare an instance outside of the
> builder.
> I would be happy to make a pull request for these changes on Github. If so,
> what direction would you like to take?
> I can code around this by copying both classes with my changes, but that
> feels really dirty.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]