mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Fix the http implicit handler bug
This commit is contained in:
parent
b247c9759a
commit
216a23f709
2 changed files with 22 additions and 6 deletions
|
@ -667,16 +667,13 @@ srs_error_t SrsHttpServeMux::handle(std::string pattern, ISrsHttpHandler* handle
|
||||||
std::string rpattern = pattern.substr(0, pattern.length() - 1);
|
std::string rpattern = pattern.substr(0, pattern.length() - 1);
|
||||||
SrsHttpMuxEntry* entry = NULL;
|
SrsHttpMuxEntry* entry = NULL;
|
||||||
|
|
||||||
// free the exists not explicit entry
|
// free the exists implicit entry
|
||||||
if (entries.find(rpattern) != entries.end()) {
|
if (entries.find(rpattern) != entries.end()) {
|
||||||
SrsHttpMuxEntry* exists = entries[rpattern];
|
entry = entries[rpattern];
|
||||||
if (!exists->explicit_match) {
|
|
||||||
entry = exists;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// create implicit redirect.
|
// create implicit redirect.
|
||||||
if (!entry || entry->explicit_match) {
|
if (!entry || !entry->explicit_match) {
|
||||||
srs_freep(entry);
|
srs_freep(entry);
|
||||||
|
|
||||||
entry = new SrsHttpMuxEntry();
|
entry = new SrsHttpMuxEntry();
|
||||||
|
|
|
@ -381,6 +381,25 @@ VOID TEST(ProtocolHTTPTest, HTTPServerMuxerImplicitHandler)
|
||||||
{
|
{
|
||||||
srs_error_t err;
|
srs_error_t err;
|
||||||
|
|
||||||
|
// Implicit handler.
|
||||||
|
if (true) {
|
||||||
|
SrsHttpServeMux s;
|
||||||
|
HELPER_ASSERT_SUCCESS(s.initialize());
|
||||||
|
|
||||||
|
MockHttpHandler* h1 = new MockHttpHandler("Done");
|
||||||
|
HELPER_ASSERT_SUCCESS(s.handle("/api", h1));
|
||||||
|
|
||||||
|
MockHttpHandler* h0 = new MockHttpHandler("Hello, world!");
|
||||||
|
HELPER_ASSERT_SUCCESS(s.handle("/api/", h0));
|
||||||
|
|
||||||
|
MockResponseWriter w;
|
||||||
|
SrsHttpMessage r(NULL, NULL);
|
||||||
|
HELPER_ASSERT_SUCCESS(r.set_url("/api", false));
|
||||||
|
|
||||||
|
HELPER_ASSERT_SUCCESS(s.serve_http(&w, &r));
|
||||||
|
__MOCK_HTTP_EXPECT_STREQ(200, "Done", w);
|
||||||
|
}
|
||||||
|
|
||||||
// Fail if explicit handler exists.
|
// Fail if explicit handler exists.
|
||||||
if (true) {
|
if (true) {
|
||||||
SrsHttpServeMux s;
|
SrsHttpServeMux s;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue