From eea7cd3c2f576d1cff6850fa208adc5ee00468e5 Mon Sep 17 00:00:00 2001 From: Glenn Strauss Date: Fri, 10 Jan 2020 23:12:08 -0500 Subject: [PATCH] [core] store (plugin *) in p->data (self-referential) --- src/base_decls.h | 3 +++ src/plugin.c | 2 +- src/plugin.h | 7 ++++--- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/base_decls.h b/src/base_decls.h index 280a72af..54cc0082 100644 --- a/src/base_decls.h +++ b/src/base_decls.h @@ -9,6 +9,9 @@ typedef struct server server; struct connection; typedef struct connection connection; +struct plugin; +typedef struct plugin plugin; + struct request_st; typedef struct request_st request_st; diff --git a/src/plugin.c b/src/plugin.c index 5521b279..797d4dad 100644 --- a/src/plugin.c +++ b/src/plugin.c @@ -435,7 +435,7 @@ handler_t plugins_call_init(server *srv) { return HANDLER_ERROR; } - /* used for con->mode, DIRECT == 0, plugins above that */ + ((plugin_data_base *)(p->data))->self = p; ((plugin_data_base *)(p->data))->id = i + 1; if (p->version != LIGHTTPD_VERSION_ID) { diff --git a/src/plugin.h b/src/plugin.h index b3d2e82b..4715326c 100644 --- a/src/plugin.h +++ b/src/plugin.h @@ -49,13 +49,14 @@ extern array plugin_stats; #define PLUGIN_DATA int id; \ int nconfig; \ - config_plugin_value_t *cvlist + config_plugin_value_t *cvlist; \ + struct plugin *self typedef struct { PLUGIN_DATA; } plugin_data_base; -typedef struct { +struct plugin { void *data; /* is called ... */ handler_t (* handle_uri_raw) (connection *con, void *p_d); /* after uri_raw is set */ @@ -85,7 +86,7 @@ typedef struct { const char *name;/* name of the plugin */ size_t version; void *lib; /* dlopen handle */ -} plugin; +}; __attribute_cold__ int plugins_load(server *srv);