Software / code / prosody
Comparison
plugins/mod_http.lua @ 5204:0b4f680ea116
mod_http: Fix pattern and slightly improve efficiency and memory usage of wildcard HTTP handlers
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Thu, 29 Nov 2012 07:15:04 +0500 |
| parent | 5190:76c73bd3d483 |
| child | 5230:6f5640375358 |
comparison
equal
deleted
inserted
replaced
| 5202:ff0d0cd07c43 | 5204:0b4f680ea116 |
|---|---|
| 86 if event_name then | 86 if event_name then |
| 87 if type(handler) ~= "function" then | 87 if type(handler) ~= "function" then |
| 88 local data = handler; | 88 local data = handler; |
| 89 handler = function () return data; end | 89 handler = function () return data; end |
| 90 elseif event_name:sub(-2, -1) == "/*" then | 90 elseif event_name:sub(-2, -1) == "/*" then |
| 91 local base_path = event_name:match("/(.+)/*$"); | 91 local base_path_len = #event_name:match("(/.+/)%*$")+1; |
| 92 local _handler = handler; | 92 local _handler = handler; |
| 93 handler = function (event) | 93 handler = function (event) |
| 94 local path = event.request.path:sub(#base_path+1); | 94 local path = event.request.path:sub(base_path_len); |
| 95 return _handler(event, path); | 95 return _handler(event, path); |
| 96 end; | 96 end; |
| 97 end | 97 end |
| 98 if not app_handlers[event_name] then | 98 if not app_handlers[event_name] then |
| 99 app_handlers[event_name] = handler; | 99 app_handlers[event_name] = handler; |