HTTP Server:
- #125 NPE on stop_server
- #127 only trust the computed Content-Length header
- #134 pong frame expects a ping frame as response HTTP Client:
- #127 only trust the computed Content-Length header
- #131 Fix the client handling of empty Reason-Phrase (Thanks Pyry Jahkola)
HTTP Server:
- Allow max websocket message size configurable: max-ws option
- #121 return the local-port of the server by meta HTTP Client:
- #110 Stringify headers in the client. (thanks cursork)
- #106 Fixed :multipart clobbering Authorization, User-Agent headers (thanks christianromney)
HTTP Client: follow 301, 302, 303, 307, 308 properly (thanks paulbutcher)
HTTP client:
- New feature: support automatically follow redirects
- New feature: support multipart/form-data file upload
HTTP client: Fix #98 Strange timeout bug: SocketChannel.connect() may return true if the connection is established immediately, then the OP_CONNECT event will not be triggered again. (thanks @cannedprimates)
Allow callback to be a multimethod for HTTP requests. (thanks @jaley)
Fix 84. 1. client sent Connection: Close => server, server try to streaming the response, server close the connection after first write, which makes a bad streaming. (thanks @rufoa)
the function return by calling run-server, than can be use to stop the server can now take an optional timeout(ms) param to wait existing requests to be finished, like (f :timeout 100) (thanks @gordonsyme)
fix 80: more robust websocket decoder, behave well even if client send one byte at a time
HTTP Header, properly handle multiple values with same key. fix #79
busy server with small RAM may OOM: do not fail, see #71
fix #70 follow clj-http's way of encoding URI
Accept ByteBuffer as the :body, not in the standard Ring Spec, but can make zero copy possbile, if performance is critical. Also useful if ByteBuffer get, just need to sent to another process
HTTP Server:
- Fix #68, Loop of Close frames
HTTP Client:
- Fix #60 By jjcomer, Add Oauth request header helper oauth-token
- Fix #62 Add HTTPS client
insecure?
support to allow self-signed certificates to function
HTTP Client:
- Fix #52: Form-params support dictionaries (nested param)
HTTP Client:
- Fix #52: 204 No Content responses from Jetty always timeout
- Do not add Accept header if one is already defined for the request, by Jeffrey Charles
- No need to create SSLEngine for http request
HTTP Server: Fix #47: Large websocket requests get corrupted
HTTP server:
- Fix: for IPv6 address
- Fix: HTTP streaming does not sent keep-alive header for HTTP 1.0 keep-alived request
- Saving RAM by using HeaderMap and Unsafe
- Get rid of reflection warning
HTTP client:
- Support HTTPS. ~110k of RAM for issuing a HTTPS request
- Check to make sure url host is not null, fix a possible NPE
- Output coercion: :as option, accepted :auto :text :stream :byte-array.
- application/xml is a text response
- FIX: handle buggy web servers returning non-compliant Status-Line
- Performance improvement. About 50% ~ 90% when benchmark due to IO model change: One IO thread => On thread reading, decoding + many threads writing
- Unify WebSocket and HTTP long polling/streaming with Channel protocol and with-channel (API breaks with the RC)
- WebSocket support sending and receiving binary frame with byte[]
- Support HTTP streaming
- WebSocket message ordering is guaranteed by server
- fix a possible CPU 100% usage
- cancelable timer service to allow efficient schedule job for the future
- fix a possible IndexOutOfBoundsException when writing websocket response
- package rename me.shenfeng.http => org.httpkit
- using semantic version
- more unit test
HTTP client:
- :filter option and max-body-filter
- fix potential deadlock: in async request's callback, a sync request is issued
- fix url double percent encoding issue
- fix deflated body is not properly decompressed
- fix keep-alive issue, add unit test to make sure it always works as expected
- :body can be nil, string, file, inputstream, iseq, just as ring response's body
HTTP server:
- properly pass :head and other method for :request-method
- save memory when decoding request by using a reasonable buffer size, increase as necessary
HTTP server:
- Support HTTP/1.0 keep-alive
- Better error reporting
- Better serving largest file(mmap),
:queue-size
option to protect high traffic web server- API redesign:
async-response
andif-ws-request
for better flexibility
HTTP client:
- API redesign: by using promise and callback, support both sync and async call
- Timeout per request
- Support keep-alive
- 1.2 Fix content-type for multipart/form-data
- 1.1.6 WebSocket support
- 1.1.3 Better syntax for defasync
- 1.1.1 HTTP client: allow custom ACCEPT_ENCODING, default gzip, deflate
- 1.1.0 defasync and async HTTP client clojure API
- 1.0.3 using UTF8 to encode HTTP response header: fix can not encode Chinese char