mod_ssl has some questionable access to the scoreboard which doesn't
work correctly starting a few minutes ago because SCOREBOARD_SIZE is
much smaller than it expects (< 1024, not indicative of the real size
of the scoreboard).
This patch should get things going again, but I wonder if anybody has
a better idea for seeding the random number generator, since this is
an unfortunate dependence on the memory allocation of the scoreboard.
Index: include/scoreboard.h
===================================================================
RCS file: /home/cvspublic/httpd-2.0/include/scoreboard.h,v
retrieving revision 1.34
diff -u -r1.34 scoreboard.h
--- include/scoreboard.h 2001/12/18 13:48:52 1.34
+++ include/scoreboard.h 2001/12/18 13:52:43
@@ -195,9 +195,6 @@
char value[VALUE_LENGTH];
} status_table_entry;
-/* XXX what should mod_ssl init use instead of this? */
-#define SCOREBOARD_SIZE sizeof(scoreboard)
-
AP_DECLARE(int) ap_exists_scoreboard_image(void);
AP_DECLARE_NONSTD(void) ap_create_scoreboard(apr_pool_t *p, ap_scoreboard_e t);
AP_DECLARE(void) ap_increment_counts(void *sbh, request_rec *r);
@@ -220,6 +217,7 @@
AP_DECLARE(worker_score *) ap_get_servers_scoreboard(int x, int y);
AP_DECLARE(process_score *) ap_get_parent_scoreboard(int x);
AP_DECLARE(global_score *) ap_get_global_scoreboard(void);
+AP_DECLARE(apr_size_t) ap_get_scoreboard_size(void);
AP_DECLARE_DATA extern scoreboard *ap_scoreboard_image;
AP_DECLARE_DATA extern const char *ap_scoreboard_fname;
Index: modules/ssl/ssl_engine_rand.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/modules/ssl/ssl_engine_rand.c,v
retrieving revision 1.7
diff -u -r1.7 ssl_engine_rand.c
--- modules/ssl/ssl_engine_rand.c 2001/11/29 05:17:38 1.7
+++ modules/ssl/ssl_engine_rand.c 2001/12/18 13:52:44
@@ -153,7 +153,7 @@
* seed in an 1KB extract of the current scoreboard
*/
if (ap_scoreboard_image != NULL) {
- n = ssl_rand_choosenum(0, SCOREBOARD_SIZE-1024-1);
+ n = ssl_rand_choosenum(0, ap_get_scoreboard_size()-1024-1);
RAND_seed((unsigned char *)ap_scoreboard_image+n, 1024);
nDone += 1024;
}
Index: server/scoreboard.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/server/scoreboard.c,v
retrieving revision 1.40
diff -u -r1.40 scoreboard.c
--- server/scoreboard.c 2001/12/18 13:48:52 1.40
+++ server/scoreboard.c 2001/12/18 13:52:44
@@ -435,3 +435,8 @@
{
return(&ap_scoreboard_image->global);
}
+
+AP_DECLARE(apr_size_t) ap_get_scoreboard_size(void)
+{
+ return scoreboard_size;
+}
--
Jeff Trawick | [EMAIL PROTECTED] | PGP public key at web site:
http://www.geocities.com/SiliconValley/Park/9289/
Born in Roswell... married an alien...