[mod_geoip] call from handle_request_env hook

(instead of handle_subrequest_start hook)

The handle_request_env hook is called on demand by dynamic handlers
and this change makes mod_geoip available for mod_magnet lua code.
This commit is contained in:
Glenn Strauss 2016-12-21 22:05:47 -05:00
parent d0f17f1e10
commit f5356302a7
1 changed files with 10 additions and 9 deletions

View File

@ -211,12 +211,7 @@ static int mod_geoip_patch_connection(server *srv, connection *con, plugin_data
}
#undef PATCH
URIHANDLER_FUNC(mod_geoip_subrequest) {
plugin_data *p = p_d;
mod_geoip_patch_connection(srv, con, p);
if (!buffer_is_empty(p->conf.db_name)) {
static handler_t mod_geoip_query (connection *con, plugin_data *p) {
const char *remote_ip;
data_string *ds;
GeoIPRecord *gir;
@ -391,12 +386,18 @@ URIHANDLER_FUNC(mod_geoip_subrequest) {
GeoIPRecord_delete(gir);
}
}
/* keep walking... (johnnie walker style ;) */
return HANDLER_GO_ON;
}
CONNECTION_FUNC(mod_geoip_handle_request_env) {
plugin_data *p = p_d;
mod_geoip_patch_connection(srv, con, p);
if (buffer_is_empty(p->conf.db_name)) return HANDLER_GO_ON;
return mod_geoip_query(con, p);
}
/* this function is called at dlopen() time and inits the callbacks */
int mod_geoip_plugin_init(plugin *p);
@ -405,7 +406,7 @@ int mod_geoip_plugin_init(plugin *p) {
p->name = buffer_init_string("geoip");
p->init = mod_geoip_init;
p->handle_subrequest_start = mod_geoip_subrequest;
p->handle_request_env = mod_geoip_handle_request_env;
p->set_defaults = mod_geoip_set_defaults;
p->cleanup = mod_geoip_free;