Commit 5e59fd7b authored by Stefan Fritsch's avatar Stefan Fritsch
Browse files

Only init the RNG once at startup. This saves some entropy and works around the APR bug

fixed in r1198921


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1198930 13f79535-47bb-0310-9956-ffa450edef68
parent 0874bc73
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -90,6 +90,8 @@ AP_DECLARE(int) ap_send_http_options(request_rec *r);
/* Used for multipart/byteranges boundary string */
extern AP_DECLARE_DATA const char *ap_multipart_boundary;

/* Init RNG at startup */
AP_CORE_DECLARE(void) ap_init_rng(apr_pool_t *p);
/* Update RNG state in parent after fork */
AP_CORE_DECLARE(void) ap_random_parent_after_fork(void);

+1 −2
Original line number Diff line number Diff line
@@ -4632,7 +4632,7 @@ AP_CORE_DECLARE(void) ap_random_parent_after_fork(void)
    apr_random_insecure_bytes(rng, &data, sizeof(data));
}

static void rng_init(apr_pool_t *p)
AP_CORE_DECLARE(void) ap_init_rng(apr_pool_t *p)
{
    unsigned char seed[8];
    apr_status_t rv;
@@ -4741,7 +4741,6 @@ static void register_hooks(apr_pool_t *p)
    ap_register_log_hooks(p);
    ap_register_config_hooks(p);
    ap_expr_init(p);
    rng_init(p);

    /* create_connection and pre_connection should always be hooked
     * APR_HOOK_REALLY_LAST by core to give other modules the opportunity
+2 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@
#include "http_log.h"
#include "http_config.h"
#include "http_core.h"
#include "mod_core.h"
#include "http_request.h"
#include "http_vhost.h"
#include "apr_uri.h"
@@ -459,6 +460,7 @@ int main(int argc, const char * const argv[])
    ap_pglobal = process->pool;
    pconf = process->pconf;
    ap_server_argv0 = process->short_name;
    ap_init_rng(ap_pglobal);

    /* Set up the OOM callback in the global pool, so all pools should
     * by default inherit it. */