Liking cljdoc? Tell your friends :D
- Added 
ring.websocket/PingListener protocol - Renamed 
websocket-request? - Fixed Jetty adapter not responding to websocket pings from client
 
- Added 
:ring.websocket/protocol key for websocket subprotocols 
- Added -open? method to Socket protocol
 - Fixed missing spaces after semicolons in Set-Cookie header (#486)
 - Updated Jetty to 11.0.16
 
- Added experimental websocket support (#484)
 - Added ring-jakarta-servlet project
 - Added .xlsx extension to default mimetypes (#480)
 - Added .webp extension to default mimetypes (#460)
 - Added .wasm extension to default mimetypes (#479)
 - Updated Commons-FileUpload to 2.0.0-M1 (#483)
 - Updated Jetty to 11.0.15 (#481)
 - Updated Commons-IO to 2.13.0
 
- Added 
:set-cookies? option to session middleware (#456) - Added 
:max-file-size option to multipart middleware (#476) - Added 
:max-file-count option to multipart middleware (#476) - Fixed multipart middleware compile under GraalVM (#430)
 - Updated Jetty to 9.4.51.v20230217
 
- Updated Jetty to 9.4.48.v20220622 (#467)
 - Updated Ring-Codec to 1.2.0
 - Updated Commons-IO to 2.11.0
 - Updated Crypto-Equality to 1.0.1
 
- Updated Jetty to 9.4.44.v20210927 (#453)
 - Improved performance of params middleware (#446)
 
- Updated Jetty to 9.4.42.v20210604 (#442)
 - Updated Commons-IO to 2.10.0
 - Updated Crypto-Random to 1.2.1
 
- Fixed missing arity on async 
OutputStream (#436) - Updated Jetty to 9.4.40.v20210413
 
- Updated Jetty to 9.4.38.v20210224 (#433)
 - Fixed reflection warning (#432)
 
- Updated Ring-Codec dependency to 1.1.3
 - Updated Jetty to 9.4.36.v20210114
 
- Fixed automatic closing of response stream on exception (#420)
 - Changed woff media type to 
font/woff & added woff2 media type (#421) - Changed TTF media type to 
font/ttf (#426) - Improved formatting in 
ring.middleware.stacktrace (#391) - Improved performance of async responses (#428)
 - Added 
:exclude-ciphers option to Jetty adapter (#405) - Added 
:exclude-protocols option to Jetty adapter (#405) - Added 
:ssl-context option to Jetty adapter (#412) - Added 
:async-timeout-handler option to Jetty adapter (#410) - Added 
:keystore-scan-interval option to Jetty adapter (#417) 
- Updated Jetty to 9.4.31.v20200723 (#411)
 
- Deprecated string secret keys for cookie session stores
 - Fixed 
nil bug in wrap-resource (#385) - Fixed charset parsing not reading quoted values (#402)
 - Fixed missing type hint in Jetty adapter (#401)
 - Updated Jetty to 9.4.28.v2020040
 - Added ring-bench benchmarking subproject
 
- Fixed confusing exception on bad queue configuration (#354)
 - Fixed poor content-type for 
wrap-stacktrace (#378) - Fixed client cert support broken by deprecated class (#380)
 - Fixed namespace reload order in 
wrap-reload (#377) - Fixed second call of handler on exceptions (#365)
 - Improved performance of 
ring.request/content-type (#332) - Updated Jetty to 9.4.22.v20191022
 - Updated Commons-FileUpload to 1.4
 - Updated Ring-Codec to 1.1.2
 - Updated ns-tracker to 0.4.0
 - Added 
:none to Same-Site cookie header (#374) - Added server connector type hint for GraalVM support (#381)
 - Added support for byte array response bodies (#334)
 - Removed clj-time as a mandatory dependency (#359)
 
- Updated Jetty to 9.4.12.v20180830
 - Fixed 
wrap-resource not working with a trailing slash 
- Functionally the same as 1.7.0-RC2.
 
- Fixed multipart parameter reflection warning (#333)
 
- Fixed 
wrap-not-modified to work per spec (#323) - Updated minimum Clojure version to 1.7.0
 - Updated Ring-Codec to 1.1.1 to fix handling of params without values (#312)
 - Updated Jetty to 9.2.24.v20180105
 - Updated Commons-IO to 2.6
 - Updated clj-time to 0.14.3
 - Added 
:max-queued-requests option to Jetty adapter (#289) - Added 
:thread-idle-timeout option to Jetty adapter (#289) - Added 
:keystore-type option to jetty adapter (#283) - Added default media types for HLS and MPEG-DASH (#308)
 - Added 
:readers option to session cookie store (#307) - Added 
ring.util.response/bad-request (#315) - Added 
:prefer-handler? option to wrap-file and wrap-resource (#321) 
- Fixed multipart field bug with byte-array-store (#301)
 - Updated Commons-FileUpload to 1.3.3 to patch exploit (#310)
 
- Fixed reflection warnings
 - Set default 
AsyncContext timeout to zero (#299) - Add 
:async-timeout option to override AsyncContext timeout 
- Fixed unreported ClosedChannelExceptions in async Jetty
 - Updated Jetty to 9.2.21.v201701209
 
- Functionally the same as 1.6.0-RC3.
 
- Fixed erroneous type hint (#286)
 - Fixed missing arguments in servlet functions (#287 and #288)
 - Fixed missing 
AsyncContext complete after sendError - Updated SPEC to clarify how to handle request headers with the same name
 
- Fixed missing 
:allow-symlinks? option in wrap-resource (#284) 
- Fixed reflection warnings (#278)
 - Added support for HTML 
_charset_ field in wrap-multipart-params (#276) - Added support for 
SameSite cookie attribute (#275) - Added support for unicode in 
wrap-keyword-params (#271) - Added preload for Cipher class to improve cookie store performance (#267)
 
- Backported path traversal vulnerability fix from version 1.5.1
 - Fixed reflection warnings in 
ring.core.protocols - Stopped 
wrap-stacktrace HTML from overflowing 
- Updated Commons FileUpload to 1.3.2
 - Fixed missing argument in 
ring.middleware.sesson/session-request - Fixed intermittent 404 response in async Jetty adapter
 
- Fixed bug in Jetty adapter that stopped async responses from completing
 - Removed unnecessary tools.reader dependency
 
- Renamed 
ResponseBody protocol to StreamableResponseBody - Renamed 
write-body protocol method to write-body-to-stream - Added 
ring.util.response/get-charset function - Added response map to 
write-body-to-stream for character encoding of strings 
- Fixed responses closing when output stream is written asynchronously
 
- Updated SPEC to accept three-arity asynchronous handlers
 - Updated all middleware to work with asynchronous handlers
 - Updated minimum servlet dependency in ring-servlet to 3.1
 - Updated ring-servlet to use 
javax.servlet.AsyncContext with async handlers - Updated ring-jetty-adapter to support async handlers when 
:async? option is true 
- Added 
ring.core.protocols namespace - Updated SPEC to accept response bodies that satisfy 
ring.core.protocols/ResponseBody 
- Fixed path-traversal vulnerability in 
resource-response function 
- Added 
:http? option to Jetty adapter to allow HTTP to be turned off - Added 
:send-server-version? option to Jetty adapter - Added 
:exclude-ciphers and :exclude-protocols options to Jetty adapter - Added a process listener function to 
wrap-multipart-params - Made 
file-response prefer HTML files as indexes over other formats - Made 
wrap-reload keep throwing compile exceptions, so errors aren't lost - Fixed issue with 
:recreate metadata not being removed from sessions - Fixed exception in 
wrap-nested-params on bad input - Updated Ring-Codec to 1.0.1 to fix exceptions on bad URL encoding
 
- Updated minimum Clojure version to 1.5.1
 - Updated Jetty to 9.2.10 as Jetty 7 is at EOL (adapter now needs JDK 7 or later)
 - Added four new Jetty 9 specific options to Jetty adapter
 - Added :protocol key to the request map in the SPEC
 - Added class :loader option to wrap-resource and resource-response
 - Fixed lowercase header bug when working with non-english locales
 - Added optional status argument to ring.util.response/redirect
 - Added ring.util.response/resource-data multimethod
 - Added functionality to regenerate sessions using :recreate metadata
 - Fixed not-modified middleware affecting POSTs and 404s
 - Added find-header and update-header to ring.util.response
 - Fixed charset case sensitivity bug
 - Updated clj-stacktrace, tools.reader, clj-time and Apache Commons FileUpload
 - Fixed temporary filename leak in multipart-params middleware
 - Updated wrap-file to accept java.io.File instances
 - Updated ns-tracker to 0.3.0 to with more robust namespace parsing
 - Fixed issue with clj-time cookie expiry dates on non-English locales
 
- Ensure Jetty adapter threadpool is cleaned when server fails to start
 - Fixed NPE in resource-response for directory resources in jar files
 - Stopped ring.util.servlet/make-service being called every request
 - Made wrap-nested-params safe to use with already nested params
 - Fixed form field encoding in wrap-multipart-params
 - Added mimetype for HTML5 application cache manifest
 
- Support HEAD requests in ring.middleware.resource/resource-request
 - Fix handling of nested parameters with names that include newlines
 
- Deprecated :content-type, :content-length and :character-encoding keys in SPEC
 - Removed deprecated keys from source code
 - Added content-length, content-type and character-encoding to ring.util.request
 - Added urlencoded-form? to ring.util.request
 - Fixed 304 not-modified responses to set content-length header
 - Added options to wrap-cookies to specify encoder and decoder functions
 - Fixed wrap-head middleware when response is nil
 - Cryptography improvements; RNG faster under Linux
 - Jetty adapter accepts filepaths for :truststore option
 - Added :min-threads, :max-queued and :max-idle-time options to Jetty adapter
 - Fixed stacktrace middleware to handle assertion errors
 - Added optional body to ring.util.response/created function
 - Added :servlet-context-path to requests from servlet containers
 - Added mimetypes for edn and dart
 - Updated ns-tracker, clj-stacktrace and clj-time dependencies
 
- Cookie middleware now adheres to RFC 6265
 - Fix for wrap-nested-params middleware
 - Update tools.reader version
 
- Fix for resources in jar files created with Leiningen 2.3.3 or above
 - Fix for UTF-8 characters in resource filenames
 - javax.servlet now a provided dependency
 
- Refactor of middleware to support async systems like Pedestal
 - Added wrap-not-modified middleware
 - Deprecated wrap-file-info middleware
 - Added ring.util.request namespace
 - file-response and resource-response include content-length and last-modifed headers
 - Use of dedicated EDN reader for security
 - Prettier wrap-stacktrace middleware
 - Support for :path-info and :context keys
 - Factored out encoding/decoding of data into ring-codec library
 - Fixed bug with :session-cookie-attrs not working if cookie not set
 - Fixed bug with last-modified dates on Windows
 - Fixed case-sensitivity issues in middleware handling headers
 - Added get-header, created and url-response to ring.util.response
 
- Updated ns-tracker dependency to fix issue with Clojure 1.5.0
 - Updated clj-stacktrace dependency to fix exception reporting
 
- Removed default charset being incorrectly set on images
 - Fixed another bug in wrap-reload by updating ns-tracker version
 
- Fixed hanging when compiling handler with wrap-multiparm-params middleware
 
- Fixed bug in wrap-reload by updating ns-tracker version
 
- Fixed wrap-multipart creating default store each request
 - Fixed wrap-session :root option default overriding :cookie-attrs
 - Fixed potential security issue where users could force a custom session cookie name
 
- Fixed bug with content-type parameters in adapter and servlets
 - Fixed bug with temp-file store spawning too many threads
 
- Fixed bug with url-decoding "$"
 - Fixed bug with trust-store password
 
- Support for SSL client certificates in Jetty adapter
 - Jetty adapter dependency upgraded to 7.6.1
 - wrap-cookies support for Joda-Time objects in expires and max-age attributes
 - Added wrap-head middleware
 - wrap-file middleware has option to follow symlinks
 - Added form-encode and form-decode to ring.util.codec
 - Fixed url-encode and url-decode to handle "+" correctly
 - Added ring.util.io namespace
 - Deprecated ring.util.test namespace
 - Hiccup ring-devel dependency upgraded to 1.0.0
 - Added more functions to ring.util.response
 - Default number of Jetty adapter threads is now 50
 - Support for KeyStore instances in Jetty adapter
 - Jetty configurator option now always applied last
 
- Updated clj-stacktrace to 0.2.4 to fix swank-clojure issue
 
- Multipart parameters with same name correctly create vector of values
 - Fixed exception when resource-response is passed a directory
 - wrap-reload middleware changed to act like wrap-reload-modified
 - wrap-keyword-params ignores parameter names that cannot be keywords
 - wrap-keyword-params can be safely applied multiple times
 - Removed ring.middleware.static
 - Servlet outputstream no longer explicitly closed and flushed
 - Downgraded Jetty from 6.1.26 to 6.1.25 to solve socket issue
 - Jetty SSL adapter respects the :host option
 - Cookies can be set as http-only
 - Fixed wrap-params for non-UTF8-encoded POST requests
 - Fixed wrap-multipart-params bug that occurs in Clojure 1.3.0
 - Better error reporting on invalid cookie attributes in wrap-cookies
 
- Multipart parameter storage backends (temp-file and byte-array)
 - Added redirect-after-post utility function
 - Character encoding of response set from content type
 
- Updated Hiccup to 0.3.6 for Clojure 1.3.0 compatibility
 
- wrap-params no longer excepts on invalid urlencoded query string
 - ring.util.servlet accepts multiple headers of the same name
 
- resource-response returns File object when possible
 - Added resource middleware
 - Stacktrace middleware displays causes (nested exceptions)
 - Bug fixes and refactor of stacktrace middleware
 
- Lint middleware recognises ISeq as valid response body
 - Added ring.util.mime-types namespace
 - Added content-type middleware
 
- Session and flash middleware handle nils without excepting
 - Cookie session store compares HMAC with constant-time function
 
- Context classloader now used for resource responses
 - Removed HttpCore adapter from repository
 - InputStream response body guaranteed to close
 - Updated Jetty dependencies to 6.1.26
 
- wrap-cookies no longer overwrites existing Set-Cookie header
 - String response bodies no longer have extra newline
 
- Added console logging for ring.handler.dump and ring.middleware.stacktrace
 - Removed runtime dependency on clojure.contrib
 
- Added nested-params middleware
 
- Fixed multipart string encoding bug
 - Memory sessions can now take a user-defined atom as an argument
 - file-info middleware date checking improved
 - Added option map to file middleware
 - Jetty adapter :configurator option can now set Jetty handlers
 
- Updated Clojure and Clojure-Contrib version to 1.2.0
 
- Fixed non-string param values in keyword params middleware
 
- Hopefully the last flash middleware fix we'll need
 - Added ring.util.response/resource-response function
 
- Fixed race condition in file-info middleware date parsing
 - Forced US locale for file-info middleware date parsing
 - Fixed NPE in multipart-params middleware when field is nil
 - Fixed another flash middleware bug that was wiping out session data
 
- Code updated to be more Clojure 1.2 compatible
 - Fixed bug in r.m.flash that was wiping out the session
 - Added If-Modified-Since support to r.m.file-info
 - Added ring.util.response/header
 - Added :root key to r.m.session as a shortcut to cookie path attribute
 - Updated ring-devel to use Hiccup instead of clj-html
 - Session cookie attributes can now be set by adding a :session-cookie-attrs key to the response.
 
- Introduce middleware for session flash
 - Cookie middleware made to work for browsers that don't follow cookie RFC (which is most of them)
 
- Depend on javax.servlet instead of org.mortbay.jetty for Servlet API artifact
 
- Distribute Ring as separate Maven artifacts: 
ring-core, ring-servlet, ring-devel, ring-jetty-adapter, and ring-http-core-adapter - The 
ring artifact now just depends on all of these granular artifacts - Build with Leiningen
 - Test with 
clojure.test - Depend only on stable point-released libraries
 - Introduce new middlewares for params, cookies, sessions
 - Intro new utils for encoding/decoding, forming responses, and unit testing
 - No longer require namespacing of request and response keys
 - More documentation, including autodocs
 - Various bugfixes
 
- First numbered Ring release
 - Adopt ring.{handler,middleware,adapter,util}.* namespace framework
 
 cljdoc builds & hosts documentation for Clojure/Script libraries
Keyboard shortcuts| Ctrl+k | Jump to recent docs | 
| ← | Move to previous article | 
| → | Move to next article | 
| Ctrl+/ | Jump to the search field | 
 × close