So something like the below?
Regards
Rüdiger
Index: modules/proxy/balancers/mod_lbmethod_bybusyness.c
===================================================================
--- modules/proxy/balancers/mod_lbmethod_bybusyness.c (revision 1836460)
+++ modules/proxy/balancers/mod_lbmethod_bybusyness.c (working copy)
@@ -22,8 +22,8 @@
module AP_MODULE_DECLARE_DATA lbmethod_bybusyness_module;
-static APR_OPTIONAL_FN_TYPE(ap_proxy_balancer_get_best_worker)
- *ap_proxy_balancer_get_best_worker_fn = NULL;
+static APR_OPTIONAL_FN_TYPE(proxy_balancer_get_best_worker)
+ *proxy_balancer_get_best_worker_fn = NULL;
static int is_best_bybusyness(proxy_worker *current, proxy_worker *prev_best,
void *baton)
{
@@ -47,7 +47,7 @@
{
int total_factor = 0;
proxy_worker *worker =
- ap_proxy_balancer_get_best_worker_fn(balancer, r, is_best_bybusyness,
+ proxy_balancer_get_best_worker_fn(balancer, r, is_best_bybusyness,
&total_factor);
if (worker) {
@@ -96,9 +96,9 @@
return OK;
}
- ap_proxy_balancer_get_best_worker_fn =
- APR_RETRIEVE_OPTIONAL_FN(ap_proxy_balancer_get_best_worker);
- if (!ap_proxy_balancer_get_best_worker_fn) {
+ proxy_balancer_get_best_worker_fn =
+ APR_RETRIEVE_OPTIONAL_FN(proxy_balancer_get_best_worker);
+ if (!proxy_balancer_get_best_worker_fn) {
ap_log_error(APLOG_MARK, APLOG_EMERG, 0, s, APLOGNO(10151)
"mod_proxy must be loaded for mod_lbmethod_bybusyness");
return !OK;
Index: modules/proxy/balancers/mod_lbmethod_byrequests.c
===================================================================
--- modules/proxy/balancers/mod_lbmethod_byrequests.c (revision 1836460)
+++ modules/proxy/balancers/mod_lbmethod_byrequests.c (working copy)
@@ -22,8 +22,8 @@
module AP_MODULE_DECLARE_DATA lbmethod_byrequests_module;
-static APR_OPTIONAL_FN_TYPE(ap_proxy_balancer_get_best_worker)
- *ap_proxy_balancer_get_best_worker_fn = NULL;
+static APR_OPTIONAL_FN_TYPE(proxy_balancer_get_best_worker)
+ *proxy_balancer_get_best_worker_fn = NULL;
static int is_best_byrequests(proxy_worker *current, proxy_worker *prev_best,
void *baton)
{
@@ -84,7 +84,7 @@
request_rec *r)
{
int total_factor = 0;
- proxy_worker *worker = ap_proxy_balancer_get_best_worker_fn(balancer, r,
is_best_byrequests, &total_factor);
+ proxy_worker *worker = proxy_balancer_get_best_worker_fn(balancer, r,
is_best_byrequests, &total_factor);
if (worker) {
worker->s->lbstatus -= total_factor;
@@ -137,9 +137,9 @@
return OK;
}
- ap_proxy_balancer_get_best_worker_fn =
- APR_RETRIEVE_OPTIONAL_FN(ap_proxy_balancer_get_best_worker);
- if (!ap_proxy_balancer_get_best_worker_fn) {
+ proxy_balancer_get_best_worker_fn =
+ APR_RETRIEVE_OPTIONAL_FN(proxy_balancer_get_best_worker);
+ if (!proxy_balancer_get_best_worker_fn) {
ap_log_error(APLOG_MARK, APLOG_EMERG, 0, s, APLOGNO(10152)
"mod_proxy must be loaded for mod_lbmethod_byrequests");
return !OK;
Index: modules/proxy/balancers/mod_lbmethod_bytraffic.c
===================================================================
--- modules/proxy/balancers/mod_lbmethod_bytraffic.c (revision
1836460)
+++ modules/proxy/balancers/mod_lbmethod_bytraffic.c (working copy)
@@ -22,8 +22,8 @@
module AP_MODULE_DECLARE_DATA lbmethod_bytraffic_module;
-static APR_OPTIONAL_FN_TYPE(ap_proxy_balancer_get_best_worker)
- *ap_proxy_balancer_get_best_worker_fn = NULL;
+static APR_OPTIONAL_FN_TYPE(proxy_balancer_get_best_worker)
+ *proxy_balancer_get_best_worker_fn = NULL;
static int is_best_bytraffic(proxy_worker *current, proxy_worker *prev_best,
void *baton)
{
@@ -62,7 +62,7 @@
{
apr_off_t min_traffic = 0;
- return ap_proxy_balancer_get_best_worker_fn(balancer, r, is_best_bytraffic,
+ return proxy_balancer_get_best_worker_fn(balancer, r, is_best_bytraffic,
&min_traffic);
}
@@ -107,9 +107,9 @@
return OK;
}
- ap_proxy_balancer_get_best_worker_fn =
- APR_RETRIEVE_OPTIONAL_FN(ap_proxy_balancer_get_best_worker);
- if (!ap_proxy_balancer_get_best_worker_fn) {
+ proxy_balancer_get_best_worker_fn =
+ APR_RETRIEVE_OPTIONAL_FN(proxy_balancer_get_best_worker);
+ if (!proxy_balancer_get_best_worker_fn) {
ap_log_error(APLOG_MARK, APLOG_EMERG, 0, s, APLOGNO(10150)
"mod_proxy must be loaded for mod_lbmethod_bytraffic");
return !OK;
Index: modules/proxy/mod_proxy.h
===================================================================
--- modules/proxy/mod_proxy.h (revision 1836460)
+++ modules/proxy/mod_proxy.h (working copy)
@@ -883,7 +883,7 @@
/*
* Needed by the lb modules.
*/
-APR_DECLARE_OPTIONAL_FN(proxy_worker *, ap_proxy_balancer_get_best_worker,
+APR_DECLARE_OPTIONAL_FN(proxy_worker *, proxy_balancer_get_best_worker,
(proxy_balancer *balancer,
request_rec *r,
proxy_is_best_callback_fn_t *is_best,
Index: modules/proxy/proxy_util.c
===================================================================
--- modules/proxy/proxy_util.c (revision 1836460)
+++ modules/proxy/proxy_util.c (working copy)
@@ -1415,6 +1415,13 @@
return best_worker;
}
+static proxy_worker* proxy_balancer_get_best_worker(proxy_balancer *balancer,
+ request_rec *r,
+
proxy_is_best_callback_fn_t *is_best,
+ void *baton)
+{
+ return ap_proxy_balancer_get_best_worker(balancer, r, is_best, baton);
+}
/*
* CONNECTION related...
*/
@@ -4079,5 +4086,5 @@
{
APR_REGISTER_OPTIONAL_FN(ap_proxy_retry_worker);
APR_REGISTER_OPTIONAL_FN(ap_proxy_clear_connection);
- APR_REGISTER_OPTIONAL_FN(ap_proxy_balancer_get_best_worker);
+ APR_REGISTER_OPTIONAL_FN(proxy_balancer_get_best_worker);
}
Von: William A Rowe Jr <[email protected]>
Gesendet: Montag, 23. Juli 2018 16:04
An: httpd <[email protected]>
Betreff: Re: Current trunk win build error
Perhaps use proxy_balancer_get_best_worker, and don't export
that? That can be the delegate for ap_proxy_balancer_get_best_worker.
We either keep callbacks local, or export them _NONSTD. All the
*_DECLARE (without _NONSTD) are not usable as apr/httpd
callbacks.
On Mon, Jul 23, 2018 at 7:22 AM, Plüm, Rüdiger, Vodafone Group
<[email protected]<mailto:[email protected]>> wrote:
> -----Ursprüngliche Nachricht-----
> Von: Apache Lounge <[email protected]<mailto:[email protected]>>
> Gesendet: Montag, 23. Juli 2018 13:35
> An: [email protected]<mailto:[email protected]>
> Betreff: Current trunk win build error
>
>
>
>
>
> Error C2440 'initializing': cannot convert from 'proxy_worker
> *(__stdcall *)(proxy_balancer *,request_rec
> *,proxy_is_best_callback_fn_t (__cdecl *),void *)' to
> 'apr_OFN_ap_proxy_balancer_get_best_worker_t (__cdecl *)'
>
> mod_proxy c:\vc15\win32\httpd-trunk\modules\proxy\proxy_util.c 4082
>
Windows experts to the rescue please :-)
Seems to be an issue between PROXY_DECLARE and the optional function stuff.
Does the following patch fix it (just guessing)?
Index: mod_proxy.h
===================================================================
--- mod_proxy.h (revision 1836460)
+++ mod_proxy.h (working copy)
@@ -883,7 +883,7 @@
/*
* Needed by the lb modules.
*/
-APR_DECLARE_OPTIONAL_FN(proxy_worker *, ap_proxy_balancer_get_best_worker,
+APR_DECLARE_OPTIONAL_FN(PROXY_DECLARE(proxy_worker *),
ap_proxy_balancer_get_best_worker,
(proxy_balancer *balancer,
request_rec *r,
proxy_is_best_callback_fn_t *is_best,
Regards
Rüdiger