labstack/echo
### [`v4.6.1`](https://togithub.com/labstack/echo/blob/master/CHANGELOG.md#v461---2021-09-26)
[Compare Source](https://togithub.com/labstack/echo/compare/v4.6.0...v4.6.1)
**Enhancements**
- Add start time to request logger middleware values [#1991](https://togithub.com/labstack/echo/pull/1991)
### [`v4.6.0`](https://togithub.com/labstack/echo/blob/master/CHANGELOG.md#v460---2021-09-20)
[Compare Source](https://togithub.com/labstack/echo/compare/v4.5.0...v4.6.0)
Introduced a new [request logger](https://togithub.com/labstack/echo/blob/master/middleware/request_logger.go) middleware
to help with cases when you want to use some other logging library in your application.
**Fixes**
- fix timeout middleware warning: superfluous response.WriteHeader [#1905](https://togithub.com/labstack/echo/issues/1905)
**Enhancements**
- Add Cookie to KeyAuth middleware's KeyLookup [#1929](https://togithub.com/labstack/echo/pull/1929)
- JWT middleware should ignore case of auth scheme in request header [#1951](https://togithub.com/labstack/echo/pull/1951)
- Refactor default error handler to return first if response is already committed [#1956](https://togithub.com/labstack/echo/pull/1956)
- Added request logger middleware which helps to use custom logger library for logging requests. [#1980](https://togithub.com/labstack/echo/pull/1980)
- Allow escaping of colon in route path so Google Cloud API "custom methods" could be implemented [#1988](https://togithub.com/labstack/echo/pull/1988)
### [`v4.5.0`](https://togithub.com/labstack/echo/blob/master/CHANGELOG.md#v450---2021-08-01)
[Compare Source](https://togithub.com/labstack/echo/compare/v4.4.0...v4.5.0)
**Important notes**
A **BREAKING CHANGE** is introduced for JWT middleware users.
The JWT library used for the JWT middleware had to be changed from [github.com/dgrijalva/jwt-go](https://togithub.com/dgrijalva/jwt-go) to
[github.com/golang-jwt/jwt](https://togithub.com/golang-jwt/jwt) due former library being unmaintained and affected by security
issues.
The [github.com/golang-jwt/jwt](https://togithub.com/golang-jwt/jwt) project is a drop-in replacement, but supports only the latest 2 Go versions.
So for JWT middleware users Go 1.15+ is required. For detailed information please read [#1940](https://togithub.com/labstack/echo/discussions/)
To change the library imports in all .go files in your project replace all occurrences of `dgrijalva/jwt-go` with `golang-jwt/jwt`.
For Linux CLI you can use:
```bash
find -type f -name "*.go" -exec sed -i "s/dgrijalva\/jwt-go/golang-jwt\/jwt/g" {} \;
go mod tidy
```
**Fixes**
- Change JWT library to `github.com/golang-jwt/jwt` [#1946](https://togithub.com/labstack/echo/pull/1946)
### [`v4.4.0`](https://togithub.com/labstack/echo/blob/master/CHANGELOG.md#v440---2021-07-12)
[Compare Source](https://togithub.com/labstack/echo/compare/v4.3.0...v4.4.0)
**Fixes**
- Split HeaderXForwardedFor header only by comma [#1878](https://togithub.com/labstack/echo/pull/1878)
- Fix Timeout middleware Context propagation [#1910](https://togithub.com/labstack/echo/pull/1910)
**Enhancements**
- Bind data using headers as source [#1866](https://togithub.com/labstack/echo/pull/1866)
- Adds JWTConfig.ParseTokenFunc to JWT middleware to allow different libraries implementing JWT parsing. [#1887](https://togithub.com/labstack/echo/pull/1887)
- Adding tests for Echo#Host [#1895](https://togithub.com/labstack/echo/pull/1895)
- Adds RequestIDHandler function to RequestID middleware [#1898](https://togithub.com/labstack/echo/pull/1898)
- Allow for custom JSON encoding implementations [#1880](https://togithub.com/labstack/echo/pull/1880)
### [`v4.3.0`](https://togithub.com/labstack/echo/blob/master/CHANGELOG.md#v430---2021-05-08)
[Compare Source](https://togithub.com/labstack/echo/compare/v4.2.2...v4.3.0)
**Important notes**
- Route matching has improvements for following cases:
1. Correctly match routes with parameter part as last part of route (with trailing backslash)
2. Considering handlers when resolving routes and search for matching http method handler
- Echo minimal Go version is now 1.13.
**Fixes**
- When url ends with slash first param route is the match [#1804](https://togithub.com/labstack/echo/pull/1812)
- Router should check if node is suitable as matching route by path+method and if not then continue search in tree [#1808](https://togithub.com/labstack/echo/issues/1808)
- Fix timeout middleware not writing response correctly when handler panics [#1864](https://togithub.com/labstack/echo/pull/1864)
- Fix binder not working with embedded pointer structs [#1861](https://togithub.com/labstack/echo/pull/1861)
- Add Go 1.16 to CI and drop 1.12 specific code [#1850](https://togithub.com/labstack/echo/pull/1850)
**Enhancements**
- Make KeyFunc public in JWT middleware [#1756](https://togithub.com/labstack/echo/pull/1756)
- Add support for optional filesystem to the static middleware [#1797](https://togithub.com/labstack/echo/pull/1797)
- Add a custom error handler to key-auth middleware [#1847](https://togithub.com/labstack/echo/pull/1847)
- Allow JWT token to be looked up from multiple sources [#1845](https://togithub.com/labstack/echo/pull/1845)
### [`v4.2.2`](https://togithub.com/labstack/echo/blob/master/CHANGELOG.md#v422---2021-04-07)
[Compare Source](https://togithub.com/labstack/echo/compare/v4.2.1...v4.2.2)
**Fixes**
- Allow proxy middleware to use query part in rewrite ([#1802](https://togithub.com/labstack/echo/issues/1802))
- Fix timeout middleware not sending status code when handler returns an error ([#1805](https://togithub.com/labstack/echo/issues/1805))
- Fix Bind() when target is array/slice and path/query params complains bind target not being struct ([#1835](https://togithub.com/labstack/echo/issues/1835))
- Fix panic in redirect middleware on short host name ([#1813](https://togithub.com/labstack/echo/issues/1813))
- Fix timeout middleware docs ([#1836](https://togithub.com/labstack/echo/issues/1836))
### [`v4.2.1`](https://togithub.com/labstack/echo/blob/master/CHANGELOG.md#v421---2021-03-08)
[Compare Source](https://togithub.com/labstack/echo/compare/v4.2.0...v4.2.1)
**Important notes**
Due to a datarace the config parameters for the newly added timeout middleware required a change.
See the [docs](https://echo.labstack.com/middleware/timeout).
A performance regression has been fixed, even bringing better performance than before for some routing scenarios.
**Fixes**
- Fix performance regression caused by path escaping ([#1777](https://togithub.com/labstack/echo/issues/1777), [#1798](https://togithub.com/labstack/echo/issues/1798), [#1799](https://togithub.com/labstack/echo/issues/1799), aldas)
- Avoid context canceled errors ([#1789](https://togithub.com/labstack/echo/issues/1789), clwluvw)
- Improve router to use on stack backtracking ([#1791](https://togithub.com/labstack/echo/issues/1791), aldas, stffabi)
- Fix panic in timeout middleware not being not recovered and cause application crash ([#1794](https://togithub.com/labstack/echo/issues/1794), aldas)
- Fix Echo.Serve() not serving on HTTP port correctly when TLSListener is used ([#1785](https://togithub.com/labstack/echo/issues/1785), [#1793](https://togithub.com/labstack/echo/issues/1793), aldas)
- Apply go fmt ([#1788](https://togithub.com/labstack/echo/issues/1788), Le0tk0k)
- Uses strings.Equalfold ([#1790](https://togithub.com/labstack/echo/issues/1790), rkilingr)
- Improve code quality ([#1792](https://togithub.com/labstack/echo/issues/1792), withshubh)
This release was made possible by our **contributors**:
aldas, clwluvw, lammel, Le0tk0k, maciej-jezierski, rkilingr, stffabi, withshubh
### [`v4.2.0`](https://togithub.com/labstack/echo/blob/master/CHANGELOG.md#v420---2021-02-11)
[Compare Source](https://togithub.com/labstack/echo/compare/v4.1.17...v4.2.0)
**Important notes**
The behaviour for binding data has been reworked for compatibility with echo before v4.1.11 by
enforcing `explicit tagging` for processing parameters. This **may break** your code if you
expect combined handling of query/path/form params.
Please see the updated documentation for [request](https://echo.labstack.com/guide/request) and [binding](https://echo.labstack.com/guide/request)
The handling for rewrite rules has been slightly adjusted to expand `*` to a non-greedy `(.*?)` capture group. This is only relevant if multiple asterisks are used in your rules.
Please see [rewrite](https://echo.labstack.com/middleware/rewrite) and [proxy](https://echo.labstack.com/middleware/proxy) for details.
**Security**
- Fix directory traversal vulnerability for Windows ([#1718](https://togithub.com/labstack/echo/issues/1718), little-cui)
- Fix open redirect vulnerability with trailing slash ([#1771](https://togithub.com/labstack/echo/issues/1771),[#1775](https://togithub.com/labstack/echo/issues/1775) aldas,GeoffreyFrogeye)
**Enhancements**
- Add Echo#ListenerNetwork as configuration ([#1667](https://togithub.com/labstack/echo/issues/1667), pafuent)
- Add ability to change the status code using response beforeFuncs ([#1706](https://togithub.com/labstack/echo/issues/1706), RashadAnsari)
- Echo server startup to allow data race free access to listener address
- Binder: Restore pre v4.1.11 behaviour for c.Bind() to use query params only for GET or DELETE methods ([#1727](https://togithub.com/labstack/echo/issues/1727), aldas)
- Binder: Add separate methods to bind only query params, path params or request body ([#1681](https://togithub.com/labstack/echo/issues/1681), aldas)
- Binder: New fluent binder for query/path/form parameter binding ([#1717](https://togithub.com/labstack/echo/issues/1717), [#1736](https://togithub.com/labstack/echo/issues/1736), aldas)
- Router: Performance improvements for missed routes ([#1689](https://togithub.com/labstack/echo/issues/1689), pafuent)
- Router: Improve performance for Real-IP detection using IndexByte instead of Split ([#1640](https://togithub.com/labstack/echo/issues/1640), imxyb)
- Middleware: Support real regex rules for rewrite and proxy middleware ([#1767](https://togithub.com/labstack/echo/issues/1767))
- Middleware: New rate limiting middleware ([#1724](https://togithub.com/labstack/echo/issues/1724), iambenkay)
- Middleware: New timeout middleware implementation for go1.13+ ([#1743](https://togithub.com/labstack/echo/issues/1743), )
- Middleware: Allow regex pattern for CORS middleware ([#1623](https://togithub.com/labstack/echo/issues/1623), KlotzAndrew)
- Middleware: Add IgnoreBase parameter to static middleware ([#1701](https://togithub.com/labstack/echo/issues/1701), lnenad, iambenkay)
- Middleware: Add an optional custom function to CORS middleware to validate origin ([#1651](https://togithub.com/labstack/echo/issues/1651), curvegrid)
- Middleware: Support form fields in JWT middleware ([#1704](https://togithub.com/labstack/echo/issues/1704), rkfg)
- Middleware: Use sync.Pool for (de)compress middleware to improve performance ([#1699](https://togithub.com/labstack/echo/issues/1699), [#1672](https://togithub.com/labstack/echo/issues/1672), pafuent)
- Middleware: Add decompress middleware to support gzip compressed requests ([#1687](https://togithub.com/labstack/echo/issues/1687), arun0009)
- Middleware: Add ErrJWTInvalid for JWT middleware ([#1627](https://togithub.com/labstack/echo/issues/1627), juanbelieni)
- Middleware: Add SameSite mode for CSRF cookies to support iframes ([#1524](https://togithub.com/labstack/echo/issues/1524), pr0head)
**Fixes**
- Fix handling of special trailing slash case for partial prefix ([#1741](https://togithub.com/labstack/echo/issues/1741), stffabi)
- Fix handling of static routes with trailing slash ([#1747](https://togithub.com/labstack/echo/issues/1747))
- Fix Static files route not working ([#1671](https://togithub.com/labstack/echo/issues/1671), pwli0755, lammel)
- Fix use of caret(^) in regex for rewrite middleware ([#1588](https://togithub.com/labstack/echo/issues/1588), chotow)
- Fix Echo#Reverse for Any type routes ([#1695](https://togithub.com/labstack/echo/issues/1695), pafuent)
- Fix Router#Find panic with infinite loop ([#1661](https://togithub.com/labstack/echo/issues/1661), pafuent)
- Fix Router#Find panic fails on Param paths ([#1659](https://togithub.com/labstack/echo/issues/1659), pafuent)
- Fix DefaultHTTPErrorHandler with Debug=true ([#1477](https://togithub.com/labstack/echo/issues/1477), lammel)
- Fix incorrect CORS headers ([#1669](https://togithub.com/labstack/echo/issues/1669), ulasakdeniz)
- Fix proxy middleware rewritePath to use url with updated tests ([#1630](https://togithub.com/labstack/echo/issues/1630), arun0009)
- Fix rewritePath for proxy middleware to use escaped path in ([#1628](https://togithub.com/labstack/echo/issues/1628), arun0009)
- Remove unless defer ([#1656](https://togithub.com/labstack/echo/issues/1656), imxyb)
**General**
- New maintainers for Echo: Roland Lammel ([@lammel](https://togithub.com/lammel)) and Pablo Andres Fuente ([@pafuent](https://togithub.com/pafuent))
- Add GitHub action to compare benchmarks ([#1702](https://togithub.com/labstack/echo/issues/1702), pafuent)
- Binding query/path params and form fields to struct only works for explicit tags ([#1729](https://togithub.com/labstack/echo/issues/1729),[#1734](https://togithub.com/labstack/echo/issues/1734), aldas)
- Add support for Go 1.15 in CI ([#1683](https://togithub.com/labstack/echo/issues/1683), asahasrabuddhe)
- Add test for request id to remain unchanged if provided ([#1719](https://togithub.com/labstack/echo/issues/1719), iambenkay)
- Refactor echo instance listener access and startup to speed up testing ([#1735](https://togithub.com/labstack/echo/issues/1735), aldas)
- Refactor and improve various tests for binding and routing
- Run test workflow only for relevant changes ([#1637](https://togithub.com/labstack/echo/issues/1637), [#1636](https://togithub.com/labstack/echo/issues/1636), pofl)
- Update .travis.yml ([#1662](https://togithub.com/labstack/echo/issues/1662), santosh653)
- Update README.md with an recents framework benchmark ([#1679](https://togithub.com/labstack/echo/issues/1679), pafuent)
This release was made possible by **over 100 commits** from more than **20 contributors**:
asahasrabuddhe, aldas, AndrewKlotz, arun0009, chotow, curvegrid, iambenkay, imxyb,
juanbelieni, lammel, little-cui, lnenad, pafuent, pofl, pr0head, pwli, RashadAnsari,
rkfg, santosh653, segfiner, stffabi, ulasakdeniz
### [`v4.1.17`](https://togithub.com/labstack/echo/compare/v4.1.16...v4.1.17)
[Compare Source](https://togithub.com/labstack/echo/compare/v4.1.16...v4.1.17)
### [`v4.1.16`](https://togithub.com/labstack/echo/releases/v4.1.16)
[Compare Source](https://togithub.com/labstack/echo/compare/v4.1.15...v4.1.16)
- [https://github.com/labstack/echo/pull/1525](https://togithub.com/labstack/echo/pull/1525)
- [https://github.com/labstack/echo/pull/1541](https://togithub.com/labstack/echo/pull/1541)
- [https://github.com/labstack/echo/pull/1535](https://togithub.com/labstack/echo/pull/1535)
### [`v4.1.15`](https://togithub.com/labstack/echo/releases/v4.1.15)
[Compare Source](https://togithub.com/labstack/echo/compare/v4.1.14...v4.1.15)
- Fix panic in FormFile if file not found ([#1515](https://togithub.com/labstack/echo/issues/1515))
- Safer/trustable extraction of real ip from request ([#1478](https://togithub.com/labstack/echo/issues/1478))
- Fix [#1493](https://togithub.com/labstack/echo/issues/1493) router loop for param routes ([#1502](https://togithub.com/labstack/echo/issues/1502))
- Fix crash on OpenBSD due to unsupported TCP KeepAlivePeriod ([#1456](https://togithub.com/labstack/echo/issues/1456))
- Migrate to GitHub Actions ([#1473](https://togithub.com/labstack/echo/issues/1473))
- Support HTTP/2 h2c mode (cleartext) ([#1489](https://togithub.com/labstack/echo/issues/1489))
### [`v4.1.14`](https://togithub.com/labstack/echo/compare/v4.1.13...v4.1.14)
[Compare Source](https://togithub.com/labstack/echo/compare/v4.1.13...v4.1.14)
### [`v4.1.13`](https://togithub.com/labstack/echo/releases/v4.1.13)
[Compare Source](https://togithub.com/labstack/echo/compare/v4.1.12...v4.1.13)
Fix param value bug ([#1467](https://togithub.com/labstack/echo/issues/1467))
### [`v4.1.12`](https://togithub.com/labstack/echo/releases/v4.1.12)
[Compare Source](https://togithub.com/labstack/echo/compare/v4.1.11...v4.1.12)
[#1412](https://togithub.com/labstack/echo/issues/1412) Fix multi level match any routes
Add ability to set the logger on echo.Context ([#1377](https://togithub.com/labstack/echo/issues/1377))
Fixed comment typo in BodyDump ([#1431](https://togithub.com/labstack/echo/issues/1431))
Reset p.values to echo.maxParam ([#1429](https://togithub.com/labstack/echo/issues/1429))
Close file descriptor returned by request.FormFile ([#1411](https://togithub.com/labstack/echo/issues/1411))
Fixed [#988](https://togithub.com/labstack/echo/issues/988)
Configuration
📅 Schedule: At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, click this checkbox.
This PR contains the following updates:
v4.1.11
->v4.6.1
Release Notes
labstack/echo
### [`v4.6.1`](https://togithub.com/labstack/echo/blob/master/CHANGELOG.md#v461---2021-09-26) [Compare Source](https://togithub.com/labstack/echo/compare/v4.6.0...v4.6.1) **Enhancements** - Add start time to request logger middleware values [#1991](https://togithub.com/labstack/echo/pull/1991) ### [`v4.6.0`](https://togithub.com/labstack/echo/blob/master/CHANGELOG.md#v460---2021-09-20) [Compare Source](https://togithub.com/labstack/echo/compare/v4.5.0...v4.6.0) Introduced a new [request logger](https://togithub.com/labstack/echo/blob/master/middleware/request_logger.go) middleware to help with cases when you want to use some other logging library in your application. **Fixes** - fix timeout middleware warning: superfluous response.WriteHeader [#1905](https://togithub.com/labstack/echo/issues/1905) **Enhancements** - Add Cookie to KeyAuth middleware's KeyLookup [#1929](https://togithub.com/labstack/echo/pull/1929) - JWT middleware should ignore case of auth scheme in request header [#1951](https://togithub.com/labstack/echo/pull/1951) - Refactor default error handler to return first if response is already committed [#1956](https://togithub.com/labstack/echo/pull/1956) - Added request logger middleware which helps to use custom logger library for logging requests. [#1980](https://togithub.com/labstack/echo/pull/1980) - Allow escaping of colon in route path so Google Cloud API "custom methods" could be implemented [#1988](https://togithub.com/labstack/echo/pull/1988) ### [`v4.5.0`](https://togithub.com/labstack/echo/blob/master/CHANGELOG.md#v450---2021-08-01) [Compare Source](https://togithub.com/labstack/echo/compare/v4.4.0...v4.5.0) **Important notes** A **BREAKING CHANGE** is introduced for JWT middleware users. The JWT library used for the JWT middleware had to be changed from [github.com/dgrijalva/jwt-go](https://togithub.com/dgrijalva/jwt-go) to [github.com/golang-jwt/jwt](https://togithub.com/golang-jwt/jwt) due former library being unmaintained and affected by security issues. The [github.com/golang-jwt/jwt](https://togithub.com/golang-jwt/jwt) project is a drop-in replacement, but supports only the latest 2 Go versions. So for JWT middleware users Go 1.15+ is required. For detailed information please read [#1940](https://togithub.com/labstack/echo/discussions/) To change the library imports in all .go files in your project replace all occurrences of `dgrijalva/jwt-go` with `golang-jwt/jwt`. For Linux CLI you can use: ```bash find -type f -name "*.go" -exec sed -i "s/dgrijalva\/jwt-go/golang-jwt\/jwt/g" {} \; go mod tidy ``` **Fixes** - Change JWT library to `github.com/golang-jwt/jwt` [#1946](https://togithub.com/labstack/echo/pull/1946) ### [`v4.4.0`](https://togithub.com/labstack/echo/blob/master/CHANGELOG.md#v440---2021-07-12) [Compare Source](https://togithub.com/labstack/echo/compare/v4.3.0...v4.4.0) **Fixes** - Split HeaderXForwardedFor header only by comma [#1878](https://togithub.com/labstack/echo/pull/1878) - Fix Timeout middleware Context propagation [#1910](https://togithub.com/labstack/echo/pull/1910) **Enhancements** - Bind data using headers as source [#1866](https://togithub.com/labstack/echo/pull/1866) - Adds JWTConfig.ParseTokenFunc to JWT middleware to allow different libraries implementing JWT parsing. [#1887](https://togithub.com/labstack/echo/pull/1887) - Adding tests for Echo#Host [#1895](https://togithub.com/labstack/echo/pull/1895) - Adds RequestIDHandler function to RequestID middleware [#1898](https://togithub.com/labstack/echo/pull/1898) - Allow for custom JSON encoding implementations [#1880](https://togithub.com/labstack/echo/pull/1880) ### [`v4.3.0`](https://togithub.com/labstack/echo/blob/master/CHANGELOG.md#v430---2021-05-08) [Compare Source](https://togithub.com/labstack/echo/compare/v4.2.2...v4.3.0) **Important notes** - Route matching has improvements for following cases: 1. Correctly match routes with parameter part as last part of route (with trailing backslash) 2. Considering handlers when resolving routes and search for matching http method handler - Echo minimal Go version is now 1.13. **Fixes** - When url ends with slash first param route is the match [#1804](https://togithub.com/labstack/echo/pull/1812) - Router should check if node is suitable as matching route by path+method and if not then continue search in tree [#1808](https://togithub.com/labstack/echo/issues/1808) - Fix timeout middleware not writing response correctly when handler panics [#1864](https://togithub.com/labstack/echo/pull/1864) - Fix binder not working with embedded pointer structs [#1861](https://togithub.com/labstack/echo/pull/1861) - Add Go 1.16 to CI and drop 1.12 specific code [#1850](https://togithub.com/labstack/echo/pull/1850) **Enhancements** - Make KeyFunc public in JWT middleware [#1756](https://togithub.com/labstack/echo/pull/1756) - Add support for optional filesystem to the static middleware [#1797](https://togithub.com/labstack/echo/pull/1797) - Add a custom error handler to key-auth middleware [#1847](https://togithub.com/labstack/echo/pull/1847) - Allow JWT token to be looked up from multiple sources [#1845](https://togithub.com/labstack/echo/pull/1845) ### [`v4.2.2`](https://togithub.com/labstack/echo/blob/master/CHANGELOG.md#v422---2021-04-07) [Compare Source](https://togithub.com/labstack/echo/compare/v4.2.1...v4.2.2) **Fixes** - Allow proxy middleware to use query part in rewrite ([#1802](https://togithub.com/labstack/echo/issues/1802)) - Fix timeout middleware not sending status code when handler returns an error ([#1805](https://togithub.com/labstack/echo/issues/1805)) - Fix Bind() when target is array/slice and path/query params complains bind target not being struct ([#1835](https://togithub.com/labstack/echo/issues/1835)) - Fix panic in redirect middleware on short host name ([#1813](https://togithub.com/labstack/echo/issues/1813)) - Fix timeout middleware docs ([#1836](https://togithub.com/labstack/echo/issues/1836)) ### [`v4.2.1`](https://togithub.com/labstack/echo/blob/master/CHANGELOG.md#v421---2021-03-08) [Compare Source](https://togithub.com/labstack/echo/compare/v4.2.0...v4.2.1) **Important notes** Due to a datarace the config parameters for the newly added timeout middleware required a change. See the [docs](https://echo.labstack.com/middleware/timeout). A performance regression has been fixed, even bringing better performance than before for some routing scenarios. **Fixes** - Fix performance regression caused by path escaping ([#1777](https://togithub.com/labstack/echo/issues/1777), [#1798](https://togithub.com/labstack/echo/issues/1798), [#1799](https://togithub.com/labstack/echo/issues/1799), aldas) - Avoid context canceled errors ([#1789](https://togithub.com/labstack/echo/issues/1789), clwluvw) - Improve router to use on stack backtracking ([#1791](https://togithub.com/labstack/echo/issues/1791), aldas, stffabi) - Fix panic in timeout middleware not being not recovered and cause application crash ([#1794](https://togithub.com/labstack/echo/issues/1794), aldas) - Fix Echo.Serve() not serving on HTTP port correctly when TLSListener is used ([#1785](https://togithub.com/labstack/echo/issues/1785), [#1793](https://togithub.com/labstack/echo/issues/1793), aldas) - Apply go fmt ([#1788](https://togithub.com/labstack/echo/issues/1788), Le0tk0k) - Uses strings.Equalfold ([#1790](https://togithub.com/labstack/echo/issues/1790), rkilingr) - Improve code quality ([#1792](https://togithub.com/labstack/echo/issues/1792), withshubh) This release was made possible by our **contributors**: aldas, clwluvw, lammel, Le0tk0k, maciej-jezierski, rkilingr, stffabi, withshubh ### [`v4.2.0`](https://togithub.com/labstack/echo/blob/master/CHANGELOG.md#v420---2021-02-11) [Compare Source](https://togithub.com/labstack/echo/compare/v4.1.17...v4.2.0) **Important notes** The behaviour for binding data has been reworked for compatibility with echo before v4.1.11 by enforcing `explicit tagging` for processing parameters. This **may break** your code if you expect combined handling of query/path/form params. Please see the updated documentation for [request](https://echo.labstack.com/guide/request) and [binding](https://echo.labstack.com/guide/request) The handling for rewrite rules has been slightly adjusted to expand `*` to a non-greedy `(.*?)` capture group. This is only relevant if multiple asterisks are used in your rules. Please see [rewrite](https://echo.labstack.com/middleware/rewrite) and [proxy](https://echo.labstack.com/middleware/proxy) for details. **Security** - Fix directory traversal vulnerability for Windows ([#1718](https://togithub.com/labstack/echo/issues/1718), little-cui) - Fix open redirect vulnerability with trailing slash ([#1771](https://togithub.com/labstack/echo/issues/1771),[#1775](https://togithub.com/labstack/echo/issues/1775) aldas,GeoffreyFrogeye) **Enhancements** - Add Echo#ListenerNetwork as configuration ([#1667](https://togithub.com/labstack/echo/issues/1667), pafuent) - Add ability to change the status code using response beforeFuncs ([#1706](https://togithub.com/labstack/echo/issues/1706), RashadAnsari) - Echo server startup to allow data race free access to listener address - Binder: Restore pre v4.1.11 behaviour for c.Bind() to use query params only for GET or DELETE methods ([#1727](https://togithub.com/labstack/echo/issues/1727), aldas) - Binder: Add separate methods to bind only query params, path params or request body ([#1681](https://togithub.com/labstack/echo/issues/1681), aldas) - Binder: New fluent binder for query/path/form parameter binding ([#1717](https://togithub.com/labstack/echo/issues/1717), [#1736](https://togithub.com/labstack/echo/issues/1736), aldas) - Router: Performance improvements for missed routes ([#1689](https://togithub.com/labstack/echo/issues/1689), pafuent) - Router: Improve performance for Real-IP detection using IndexByte instead of Split ([#1640](https://togithub.com/labstack/echo/issues/1640), imxyb) - Middleware: Support real regex rules for rewrite and proxy middleware ([#1767](https://togithub.com/labstack/echo/issues/1767)) - Middleware: New rate limiting middleware ([#1724](https://togithub.com/labstack/echo/issues/1724), iambenkay) - Middleware: New timeout middleware implementation for go1.13+ ([#1743](https://togithub.com/labstack/echo/issues/1743), ) - Middleware: Allow regex pattern for CORS middleware ([#1623](https://togithub.com/labstack/echo/issues/1623), KlotzAndrew) - Middleware: Add IgnoreBase parameter to static middleware ([#1701](https://togithub.com/labstack/echo/issues/1701), lnenad, iambenkay) - Middleware: Add an optional custom function to CORS middleware to validate origin ([#1651](https://togithub.com/labstack/echo/issues/1651), curvegrid) - Middleware: Support form fields in JWT middleware ([#1704](https://togithub.com/labstack/echo/issues/1704), rkfg) - Middleware: Use sync.Pool for (de)compress middleware to improve performance ([#1699](https://togithub.com/labstack/echo/issues/1699), [#1672](https://togithub.com/labstack/echo/issues/1672), pafuent) - Middleware: Add decompress middleware to support gzip compressed requests ([#1687](https://togithub.com/labstack/echo/issues/1687), arun0009) - Middleware: Add ErrJWTInvalid for JWT middleware ([#1627](https://togithub.com/labstack/echo/issues/1627), juanbelieni) - Middleware: Add SameSite mode for CSRF cookies to support iframes ([#1524](https://togithub.com/labstack/echo/issues/1524), pr0head) **Fixes** - Fix handling of special trailing slash case for partial prefix ([#1741](https://togithub.com/labstack/echo/issues/1741), stffabi) - Fix handling of static routes with trailing slash ([#1747](https://togithub.com/labstack/echo/issues/1747)) - Fix Static files route not working ([#1671](https://togithub.com/labstack/echo/issues/1671), pwli0755, lammel) - Fix use of caret(^) in regex for rewrite middleware ([#1588](https://togithub.com/labstack/echo/issues/1588), chotow) - Fix Echo#Reverse for Any type routes ([#1695](https://togithub.com/labstack/echo/issues/1695), pafuent) - Fix Router#Find panic with infinite loop ([#1661](https://togithub.com/labstack/echo/issues/1661), pafuent) - Fix Router#Find panic fails on Param paths ([#1659](https://togithub.com/labstack/echo/issues/1659), pafuent) - Fix DefaultHTTPErrorHandler with Debug=true ([#1477](https://togithub.com/labstack/echo/issues/1477), lammel) - Fix incorrect CORS headers ([#1669](https://togithub.com/labstack/echo/issues/1669), ulasakdeniz) - Fix proxy middleware rewritePath to use url with updated tests ([#1630](https://togithub.com/labstack/echo/issues/1630), arun0009) - Fix rewritePath for proxy middleware to use escaped path in ([#1628](https://togithub.com/labstack/echo/issues/1628), arun0009) - Remove unless defer ([#1656](https://togithub.com/labstack/echo/issues/1656), imxyb) **General** - New maintainers for Echo: Roland Lammel ([@lammel](https://togithub.com/lammel)) and Pablo Andres Fuente ([@pafuent](https://togithub.com/pafuent)) - Add GitHub action to compare benchmarks ([#1702](https://togithub.com/labstack/echo/issues/1702), pafuent) - Binding query/path params and form fields to struct only works for explicit tags ([#1729](https://togithub.com/labstack/echo/issues/1729),[#1734](https://togithub.com/labstack/echo/issues/1734), aldas) - Add support for Go 1.15 in CI ([#1683](https://togithub.com/labstack/echo/issues/1683), asahasrabuddhe) - Add test for request id to remain unchanged if provided ([#1719](https://togithub.com/labstack/echo/issues/1719), iambenkay) - Refactor echo instance listener access and startup to speed up testing ([#1735](https://togithub.com/labstack/echo/issues/1735), aldas) - Refactor and improve various tests for binding and routing - Run test workflow only for relevant changes ([#1637](https://togithub.com/labstack/echo/issues/1637), [#1636](https://togithub.com/labstack/echo/issues/1636), pofl) - Update .travis.yml ([#1662](https://togithub.com/labstack/echo/issues/1662), santosh653) - Update README.md with an recents framework benchmark ([#1679](https://togithub.com/labstack/echo/issues/1679), pafuent) This release was made possible by **over 100 commits** from more than **20 contributors**: asahasrabuddhe, aldas, AndrewKlotz, arun0009, chotow, curvegrid, iambenkay, imxyb, juanbelieni, lammel, little-cui, lnenad, pafuent, pofl, pr0head, pwli, RashadAnsari, rkfg, santosh653, segfiner, stffabi, ulasakdeniz ### [`v4.1.17`](https://togithub.com/labstack/echo/compare/v4.1.16...v4.1.17) [Compare Source](https://togithub.com/labstack/echo/compare/v4.1.16...v4.1.17) ### [`v4.1.16`](https://togithub.com/labstack/echo/releases/v4.1.16) [Compare Source](https://togithub.com/labstack/echo/compare/v4.1.15...v4.1.16) - [https://github.com/labstack/echo/pull/1525](https://togithub.com/labstack/echo/pull/1525) - [https://github.com/labstack/echo/pull/1541](https://togithub.com/labstack/echo/pull/1541) - [https://github.com/labstack/echo/pull/1535](https://togithub.com/labstack/echo/pull/1535) ### [`v4.1.15`](https://togithub.com/labstack/echo/releases/v4.1.15) [Compare Source](https://togithub.com/labstack/echo/compare/v4.1.14...v4.1.15) - Fix panic in FormFile if file not found ([#1515](https://togithub.com/labstack/echo/issues/1515)) - Safer/trustable extraction of real ip from request ([#1478](https://togithub.com/labstack/echo/issues/1478)) - Fix [#1493](https://togithub.com/labstack/echo/issues/1493) router loop for param routes ([#1502](https://togithub.com/labstack/echo/issues/1502)) - Fix crash on OpenBSD due to unsupported TCP KeepAlivePeriod ([#1456](https://togithub.com/labstack/echo/issues/1456)) - Migrate to GitHub Actions ([#1473](https://togithub.com/labstack/echo/issues/1473)) - Support HTTP/2 h2c mode (cleartext) ([#1489](https://togithub.com/labstack/echo/issues/1489)) ### [`v4.1.14`](https://togithub.com/labstack/echo/compare/v4.1.13...v4.1.14) [Compare Source](https://togithub.com/labstack/echo/compare/v4.1.13...v4.1.14) ### [`v4.1.13`](https://togithub.com/labstack/echo/releases/v4.1.13) [Compare Source](https://togithub.com/labstack/echo/compare/v4.1.12...v4.1.13) Fix param value bug ([#1467](https://togithub.com/labstack/echo/issues/1467)) ### [`v4.1.12`](https://togithub.com/labstack/echo/releases/v4.1.12) [Compare Source](https://togithub.com/labstack/echo/compare/v4.1.11...v4.1.12) [#1412](https://togithub.com/labstack/echo/issues/1412) Fix multi level match any routes Add ability to set the logger on echo.Context ([#1377](https://togithub.com/labstack/echo/issues/1377)) Fixed comment typo in BodyDump ([#1431](https://togithub.com/labstack/echo/issues/1431)) Reset p.values to echo.maxParam ([#1429](https://togithub.com/labstack/echo/issues/1429)) Close file descriptor returned by request.FormFile ([#1411](https://togithub.com/labstack/echo/issues/1411)) Fixed [#988](https://togithub.com/labstack/echo/issues/988)Configuration
📅 Schedule: At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.