Reinitialize global variables when necessary (for monolith application).
diff --git a/apps/ca.c b/apps/ca.c
index 42dc420..1450c0c 100644
--- a/apps/ca.c
+++ b/apps/ca.c
@@ -273,9 +273,13 @@
 
 	apps_startup();
 
+	key = NULL;
+	section = NULL;
+
 	X509V3_add_standard_extensions();
 
 	preserve=0;
+	msie_hack=0;
 	if (bio_err == NULL)
 		if ((bio_err=BIO_new(BIO_s_file())) != NULL)
 			BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
diff --git a/apps/crl.c b/apps/crl.c
index f7bdf76..e0757d9 100644
--- a/apps/crl.c
+++ b/apps/crl.c
@@ -250,6 +250,7 @@
 end:
 	BIO_free(out);
 	BIO_free(bio_out);
+	bio_out=NULL;
 	X509_CRL_free(x);
 	X509V3_EXT_cleanup();
 	EXIT(ret);
diff --git a/apps/req.c b/apps/req.c
index cc524de..ce2e190 100644
--- a/apps/req.c
+++ b/apps/req.c
@@ -152,6 +152,7 @@
 	MS_STATIC char config_name[256];
 #endif
 
+	req_conf = NULL;
 #ifndef NO_DES
 	cipher=EVP_des_ede3_cbc();
 #endif
diff --git a/apps/s_server.c b/apps/s_server.c
index afe4182..144dfa6 100644
--- a/apps/s_server.c
+++ b/apps/s_server.c
@@ -107,7 +107,9 @@
 static DH *load_dh_param(void );
 static DH *get_dh512(void);
 #endif
-/* static void s_server_init(void);*/
+#ifdef MONOLITH
+static void s_server_init(void);
+#endif
 
 #ifndef S_ISDIR
 # if defined(_S_IFMT) && defined(_S_IFDIR)
@@ -175,9 +177,12 @@
 static int s_debug=0;
 static int s_quiet=0;
 
-#if 0
+static int hack=0;
+
+#ifdef MONOLITH
 static void s_server_init(void)
 	{
+	accept_socket=-1;
 	cipher=NULL;
 	s_server_verify=SSL_VERIFY_NONE;
 	s_dcert_file=NULL;
@@ -194,6 +199,7 @@
 	bio_s_out=NULL;
 	s_debug=0;
 	s_quiet=0;
+	hack=0;
 	}
 #endif
 
@@ -240,7 +246,6 @@
 
 static int local_argc=0;
 static char **local_argv;
-static int hack=0;
 
 #ifdef CHARSET_EBCDIC
 static int ebcdic_new(BIO *bi);
@@ -419,8 +424,9 @@
 	local_argv=argv;
 
 	apps_startup();
-	s_quiet=0;
-	s_debug=0;
+#ifdef MONOLITH
+	s_server_init();
+#endif
 
 	if (bio_err == NULL)
 		bio_err=BIO_new_fp(stderr,BIO_NOCLOSE);