Changelog
Source:NEWS.md
httpuv 1.6.17
Closed #426: Uses native symbol registration for calls into compiled code, resulting in performance gains from not having to perform a lookup on each call. (#427)
Fixed installation failures on macOS caused by the bundled libuv build trying to regenerate autotools files when only some tools (e.g., automake) are present. (#430)
Fixed a
-single_module is obsoletelinker warning on macOS with newer Apple toolchains that could surface as a significant warning inR CMD check. (#433)Tests now gracefully skip when suggested packages (
curl,websocket) are not installed, rather than failing the entire test suite. (#432)
httpuv 1.6.15
CRAN release: 2024-03-26
runStaticServer()no longer fails ifbrowse = TRUEbututils::browseURL()is unable to open the server. (#395)Improved testing of
runStaticServer()to accurately test thatrunStaticServer()throws an error when a requested port is not available on FreeBSD. (#396)
httpuv 1.6.12
CRAN release: 2023-10-23
New
runStaticServer()provides a convenient interface for serving a directory of static files. (#380)Remove a workaround to support
shinyolder than version 1.0.6 (#378)
httpuv 1.6.10
CRAN release: 2023-05-08
- WebSocket connections now send Ping frames to the client every 20 seconds. This is only intended to serve as a keepalive for proxies that might be sitting in front of us; we don’t pay attention to whether a Pong response is received in a timely manner. (#359)
httpuv 1.6.6
CRAN release: 2022-09-08
Update docs for CRAN (#343)
Updated to libuv 1.43.0. (#328)
Fixed #336:
encodeURI()andencodeURIComponent()printed a space instead of a leading zero, as in"% A"instead of"%0A". (#337)
httpuv 1.6.3
CRAN release: 2021-09-09
- Increased required version of Rcpp to 1.0.7, to work around an incompatibility between Rcpp 1.0.6 and packages compiled with Rcpp 1.0.7.
httpuv 1.6.1
CRAN release: 2021-05-07
- The
timegm()function is a non-standard GNU extension, so it has been replaced with an internaltimegm2()function. (#300)
httpuv 1.6.0
CRAN release: 2021-04-23
- Remove BH dependency. httpuv now requires a compiler which supports C++11. (#297)
httpuv 1.5.5
CRAN release: 2021-01-13
Fix SHA1 calculation, and thus WebSocket server handshakes, on big-endian systems. (#284)
Fixed #195: Responses required
headersto be a named list. Now it can also beNULL, an empty unnamed list, or it can be unset. (#289)Allow responses to omit
body(or set it asNULL) to avoid sending a body or setting theContent-Lengthheader. This is intended for use with HTTP 204/304 responses. (#288)
httpuv 1.5.3.1
CRAN release: 2020-05-26
Updated libuv to version 1.37.0. (#266)
Fixed #204: On UBSAN builds of R, there were warnings about unaligned memory access. (#246)
Avoid creating a new Rook error stream object for each request. This should improve performance. (#245)
Resolved #247: httpuv no longer returns a HTTP 400 code for static files when the “Content-Length” header is 0. This Content-Length header is inserted by some proxies even for messages without payloads. (#248)
Resolved #253: Setting the FRAMEWORK environment variable would break compilation. This change removes any dependency on that variable. (#254)
httpuv 1.5.2
CRAN release: 2019-09-11
In the static file-serving code path, httpuv previously looked for a
Connection: upgradeheader; if it found this header, it would not try to serve a static file, and it would instead forward the HTTP request to the R code path. However, some proxies are configured to always set this header, even when the connection is not actually meant to be upgraded. Now, instead of looking for aConnection: upgradeheader, httpuv looks for the presence of anUpgradeheader (with any value), and should be more robust to incorrectly-configured proxies. (#215)Fixed handling of messages without payloads: (#219)
Fixed #224: Static file serving on Windows did not work correctly if it was from a path that contained non-ASCII characters. (#227)
Resolved #194, #233: Added a
quietoption tostartServer, which suppresses startup error messages that are normally printed to console (and can’t be intercepted withcapture.output()). (#234)Added a new function
randomPort(), which returns a random available port for listening on. (#234)Added a new (unexported) function
logLevel(), for controlling debugging information that will be printed to the console. Previously, httpuv occasionally printed messages likeERROR: [uv_write] broken pipeandERROR: [uv_write] bad file descriptorby default. This happened when the server tried to write to a pipe that was already closed, but the situation was not harmful, and was already being handled correctly. Now these messages are printed only if the log level is set toINFOorDEBUG. (#223)If an application’s
$call()method is missing, it will now give a 404 response instead of a 500 response. (#237)Disallowed backslash in static path, to prevent path traversal attacks. (#235)
Static file serving on Windows could fail if multiple requests accessed the same file simultaneously. (#239)
httpuv 1.5.1
CRAN release: 2019-04-05
Fixed issues for compilers that didn’t support C++11, notably on RHEL and Centos 6. (#210)
Fixed #208: In some cases, a race condition could cause the R process to exit when starting a new server. (#211)
Updated to libuv 1.27.0. This fixed fixed #213: Valgrind reported an error about a pointer pointing to uninitialized memory. (#214)
httpuv 1.5.0
CRAN release: 2019-03-15
Added support for serving static files from the background I/O thread. Files can now be served from the filesystem without involving the main R thread, which means that these operations won’t block or be blocked by code that runs in the main R thread. (#177)
Running httpuv applications are now represented by R6 objects of class
WebServerandPipeServer. These objects have methods to query and update the application. (#177)Converted existing reference classes (
InputStream,NullInputStream,ErrorStream,AppWrapper, andWebSocket) to R6 classes. (#178)Fixed #168: A SIGPIPE signal on the httpuv background thread could cause the process to quit. This can happen in some instances when the server is under heavy load. (#169)
Fixed #122:
decodeURI()anddecodeURIComponent()previously returned strings encoded with the system’s native encoding; they now return UTF-8 encoded strings. (#185, #192)encodeURI()andencodeURIComponent(), now convert their inputs to UTF-8 before URL-encoding. (#192)encodeURI(),encodeURIComponent(),decodeURI(), anddecodeURIComponent()now handleNAs correctly. (#192)service()now executes a singlelatercallback, rather than all eligible callbacks. This gives callers more opportunities to perform their own housekeeping when multiple expensive callbacks queue up. (#176)Fixed #173: The source code is now compiled with
-DSTRICT_R_HEADERS, which eliminates the need to undefine theReallocandFreemacros.Updated to libuv 1.23.1. (#174)
httpuv 1.4.5.1
CRAN release: 2018-12-18
- Moved the
C_VISIBILITYfromPKG_CPPFLAGStoPKG_CFLAGS, and addedCXX_VISIBILITYtoPKG_CXXFLAGS, as requested by the CRAN maintainers.
httpuv 1.4.4.2
CRAN release: 2018-07-02
- Changed compiler flags to work with gcc 8.10 on Windows, so that httpuv will build with the new versions of Rtools. (#160)
httpuv 1.4.4.1
CRAN release: 2018-06-18
- Remove
_GLIBCXX_ASSERTIONScompile flag, which caused CRAN checks to fail on gcc 7.
httpuv 1.4.4
Fixed #144: Before closing a handle, make sure that it is not already closing. (#145)
Exported
ipFamily()function, which tests whether a string represents an IPv4 address, IPv6 address, or neither. (#142)Templated C++ code with the format
A<B<C>>has been changed toA<B<C> >. Allowing consecutive>>is a feature of C++11.httpuv is now compiled with
_GLIBCXX_ASSERTIONS, to help catch bugs. (#137)The Rook
reqenvironment now includes an itemreq$HEADERS, which is a named character vector of request headers. (#143)Fixed #101: If server creation fails, report reason why. (#146, #149)
Fixed #147: Santizer complained when starting app with
startPipeServerafter a failed app start. (#149)Fixed #150, #151: On some platforms, httpuv would fail to install from a zip file because R’s
unzip()function did not preserve the executable permission forsrc/libuv/configure. (#152)Worked around an issue where Shiny apps couldn’t be viewed when launched from RStudio Server using Firefox. (#153)
httpuv 1.4.0
CRAN release: 2018-04-19
Changed license from GPL 3 to GPL >= 2. (#109)
Added IPv6 support. (#115)
httpuv now does I/O on a background thread, which should allow for much better performance under load. (#106)
httpuv can now handle request callbacks asynchronously. (#80, (#97))
Fixed #72: httpuv previously did not close connections that had the
Connection: closeheader, or were HTTP 1.0 (withoutConnection: keep-alive). (#99)Fixed #71: In some cases, compiling httpuv would use system copies of library headers, but use local copies of libraries for linking. (#121)
Let Rcpp handle symbol registration. (#85)
Hide internal symbols from shared library on supported platforms. This reduces the risk of conflicts with other packages bundling libuv. (#85)
Fixed #86:
encodeURI()gave incorrect output for non-ASCII characters. (#87)Fixed #49: Some information was shared across separate requests.
Upgraded to libuv 1.15.0. (#91)
Upgraded to http-parser 2.7.1. (#93)
httpuv 1.3.3
CRAN release: 2015-08-04
Error messages are now sent as UTF-8.
httpuv no longer adds a Content-Length header if one has already been provided. This is for Shiny issue #876.
httpuv 1.3.2
CRAN release: 2014-10-23
Add
encodeURI,encodeURIComponent,decodeURI, anddecodeURIComponentfunctions.Compatibility with Rook middleware reference classes.
httpuv 1.3.1
- Fix bug where websocket headers split over multiple packets would cause the payload to be parsed incorrectly.
httpuv 1.3.0
CRAN release: 2014-04-04
- Add experimental support for running httpuv servers in the background (see
?startDaemonizedServerand?stopDaemonizedServer). Many thanks to Héctor Corrada Bravo for the contribution!
httpuv 1.2.3
CRAN release: 2014-02-19
- Require Rcpp 0.11.0. The absence of this requirement made it too easy for Windows and Mac users with Rcpp 0.10 already installed to grab httpuv 1.2.2 binaries from CRAN, which are built against Rcpp 0.11, causing bad crashes due to Rcpp’s linkage changes.
httpuv 1.2.2
CRAN release: 2014-01-31
Export base64 encoding function
rawToBase64.Compatibility work for Rcpp 0.11.0.
httpuv 1.2.0
CRAN release: 2013-10-14
Fix IE10 websocket handshake failure.
Implement hixie-76 version of WebSocket protocol, for Safari 4 and QtWebKit.
httpuv 1.1.0
CRAN release: 2013-08-22
Fix issue #8: Bug in concurrent uploads.
Add
interrupt()function for stopping the runloop.Add REMOTE_ADDR and REMOTE_PORT to request environment.
Switch from git submodules to git subtree; much easier installation of development builds.
Upgrade to libuv v0.10.13.
Fix issue #13: Segfault on successful retry of server creation.
httpuv 1.0.6.3
CRAN release: 2013-06-01
- Greatly improved stability under heavy load by ignoring SIGPIPE.
httpuv 1.0.6.2
Work properly with
body=c(file="foo"). Previously this only worked if body was a list, not a character vector.R CMD INSTALL will do
git submodule update --initif necessary.When
onHeaders()callback returned a body, httpuv was not properly short-circuiting the request.Ignore SIGPIPE permanently. This was still causing crashes under heavy real-world traffic.