summaryrefslogtreecommitdiffstats
path: root/debian/perl-framework/c-modules/memory_track/mod_memory_track.c
blob: 25d11ca89361de681a23b856907d4a4050453bd6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#if CONFIG_FOR_HTTPD_TEST

<Location /memory_track>
  SetHandler memory-track
</Location>

#endif

#define APACHE_HTTPD_TEST_HANDLER memory_track_handler

#include "apache_httpd_test.h"
#include "ap_mpm.h"

static int memory_track_handler(request_rec *r)
{
    int result;
    
    if (strcmp(r->handler, "memory-track")) {
        return DECLINED;
    }
    if (r->method_number != M_GET) {
        return DECLINED;
    }

    /* t/apache/leaks.t not reliable with event. */
    if (!ap_mpm_query(AP_MPMQ_IS_ASYNC, &result) && result) {
        return HTTP_SERVICE_UNAVAILABLE;
    }
    
#if APR_POOL_DEBUG
    {
        conn_rec *c = r->connection;
        apr_size_t n = apr_pool_num_bytes(c->pool, 1);
        
        ap_rprintf(r, "connection,%ld,%lu\n", c->id, n);
    }

    return OK;
#else
    return HTTP_NOT_IMPLEMENTED;
#endif
}

APACHE_HTTPD_TEST_MODULE(memory_track);