Apache Modules - Modifying and Persisting Values in Memory Across Requests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

Can someone explain a way via a C module to update a counter value for every request served by the module and write that value (via ap_rputs or something similar) to the browser.  For example, the first time the module services a request, it writes 1 to the browser, the next time it writes 2, ....  I tried apr_pool_userdata_get/set with r->server->process->pool as my memory pool, but this doesn't seem to work.  This value appears to be in memory sometimes but not others.  It will increment as expected for awhile and then drop back to 0.  I'm not trying to implement a counter for my page.  I'm trying to think of the simplest example so that once I see how this is done, I can easily extrapolate to solve my real problem.  Any help is appreciated, especially code!

Here is some sample code that I was using without success:


    static int ContentHandler( request_rec* r )
    {
        //Don't processs any requests not intended for us
        if(!nStringUtils::SensitiveEqual(r->handler, "mo_test-handler"))
        {
            return DECLINED;
        }

        int* pData = 0;
        apr_status_t retStatus = apr_pool_userdata_get((void**)&pData, "mo_test::__my_test_value__", r->server->process->pool);
        if(retStatus == APR_SUCCESS)
        {
            if(pData != 0)
            {
                (*pData) = (*pData) + 1;
            }
            else
            {
                pData = (int*)malloc(sizeof(int));
                *pData = 0;
                apr_status_t retStatus2 = apr_pool_userdata_set(pData, "mo_test::__my_test_value__", apr_pool_cleanup_null, r->server->process->pool);
            }

            char buf[255];
            itoa(*pData, buf, 10);
            ap_rputs(buf, r);
            ap_rflush(r);
        }
        return OK;
    }


[Index of Archives]     [Open SSH Users]     [Linux ACPI]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Squid]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux