More cleanups in code adding more privateness, getting rid of unnecessary exceptions, making fields final, etc.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
GCThreadLeakPreventer has been removed, since the issue
it was trying to fix was solved in Java 9+.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
* Use File.list and File.walk within a try with resource
The API contract of File.list and File.walk requires them to be closed after use.
* Fix from review
Left out filter
* Fix from review
Factored out deleteFile with better debug
* Fix from review
Can delete files whilst walking
* Fix from review
Restored sweepFile
fixed minor code suggestions
* Fix#5562 Improve HTTP Field cache allocation
Fix#5562 by initially putting cacheable fields into a inexpensive arraylist.
Only create the Trie (with space and complexity costs) if a second request is received.
* Fixed NPE
* Feedback from review
Create `HttpHeader.isPseudo()`` method
improved clarity with `createFieldCacheIfNeeded()``
* Feedback from review
Only defer Trie creation to first cacheable field, not until next request.
* Updates from review
* Update from review
+ more javadoc
+ empty set return
+ Added all IANA methods
+ Used Trie for most lookups
+ Fixed ArrayTernayTrie lookup
+ optimised GET, POST and HEAD
Co-authored-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
Reimplemented close/idle_timeout/stop/onGoAway/input_shutdown following more closely the specification.
In particular, the semantic of sending a GOAWAY is now to:
* stop creation of new both local and remote streams
* record the last processed stream
* continue processing streams that are pending
This means that a GOAWAY is "graceful" in the sense that it allows for streams to be completed by applications.
The semantic of stop() and idle timeout is harsher: for pending streams a RST_STREAM is sent to the other peer and they are failed locally.
Added support for GOAWAY with 2^31-1 lastStreamId.
Added support for a peer to send and receive multiple GOAWAY frames.
Reviewed the stream creation/destruction mechanism so that when the last stream completes after a GOAWAY, proper actions can be run to tear down the connection.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
* Fixes#5521 ResourceCollection NPE
Fix constructor and addPath so that all resources in a RC must exist when created.
* Fixes#5521 ResourceCollection NPE
Cleanup the vestiges of non existent directories detected by resource ending in /
* Fixes#5521 ResourceCollection NPE
Revert adding paths ending in / as jar:file resource needs them
* feedback from review
improved javadoc.
* Fixes#55498 ServletHolder cleanup
Various cleanups for #5498 including:
+ renaming multiple `_servlet` fields in inner classes to avoid confusion
+ better comments in prepare method to describe why it is needed
+ call prepare from Invoker servlet
+ The `_servlet` field is not set until after the servlet is initialized
+ Consistent wrapping of `SingleThreadedWrapper` now in `initServlet`
+ The `getServlet` method now looks the volatile `_servlet` to avoid locking if possible
+ The `handle` method now calls `getServletInstance` as servlet will have been initialized in `prepare`
+ Found and fixed race with making unavaiable servlet available again
+ fixed nanotime overflow
+ fixed several compiler warnings/suggestions
+ removed while true from unavailable servlet
+ Do not destroy servlets unless init has been called.
+ Added TODOs about calling predestroy on instances not created by the holder.
+ Do not destroy servlets unless init has been called.
+ Added TODOs about calling predestroy on instances not created by the holder.
+ improved dump and toString