-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Open
gin-gonic/gin
#2663Milestone
Description
Steps to reproduce
- Use version
4563b0b
ofhttprouter
- Compile the following program
package main
import (
"github.com/julienschmidt/httprouter"
"net/http"
)
func main() {
router := httprouter.New()
router.GET("/user/:user", nil)
router.GET("/user/gordon/:profile", nil)
http.ListenAndServe(":8080", router)
}
- Run it
Expected behavior
Process starts web server. Requests with a two-segment path, if beginning with /user/
, go to the first handler. Requests with a three-segment path, if beginning with /user/gordon/
, go to the second handler. All other requests error.
Actual behavior
Process panics:
panic: 'gordon' in new path '/user/gordon/:profile' conflicts with existing wildcard ':user' in existing prefix '/user/:user'
goroutine 1 [running]:
panic(0x20c240, 0xc42000d200)
/usr/local/Cellar/go/1.7.3/libexec/src/runtime/panic.go:500 +0x1a1
github.com/pusher/httproutertest/vendor/github.com/julienschmidt/httprouter.(*node).addRoute(0xc420012730, 0x2676c4, 0x15, 0x0)
/Users/jhf/go/src/github.com/pusher/httproutertest/vendor/github.com/julienschmidt/httprouter/tree.go:159 +0x73e
github.com/pusher/httproutertest/vendor/github.com/julienschmidt/httprouter.(*Router).Handle(0xc420010500, 0x263045, 0x3, 0x2676c4, 0x15, 0x0)
/Users/jhf/go/src/github.com/pusher/httproutertest/vendor/github.com/julienschmidt/httprouter/router.go:236 +0xcc
github.com/pusher/httproutertest/vendor/github.com/julienschmidt/httprouter.(*Router).GET(0xc420010500, 0x2676c4, 0x15, 0x0)
/Users/jhf/go/src/github.com/pusher/httproutertest/vendor/github.com/julienschmidt/httprouter/router.go:180 +0x5e
main.main()
/Users/jhf/go/src/github.com/pusher/httproutertest/main.go:11 +0xba
Metadata
Metadata
Assignees
Labels
No labels