com php-src: Revert "move winsock specific stuff into dllmain": main/main.c win32/dllmain.c

[email protected] (Anatol Belski)
Newsgroups php.cvs
Message-ID <[email protected]>
Commit:    02991f75ce429390314ef183c6a77af7aa000c39
Author:    Anatol Belski <[email protected]>         Sat, 11 Feb 2017 18:55:32 +0100
Parents:   d94c2c796a1b032d53b382681f8413cc3d02d2da
Branches:  master

Link:       http://git.php.net/?p=php-src.git;a=commitdiff;h=02991f75ce429390314ef183c6a77af7aa000c39

Log:
Revert "move winsock specific stuff into dllmain"

This reverts commit d94c2c796a1b032d53b382681f8413cc3d02d2da.

WSA functions are documented explicitly as unsafe for dllmain

Changed paths:
  M  main/main.c
  M  win32/dllmain.c


Diff:
diff --git a/main/main.c b/main/main.c
index daa8235..9e139ef 100644
--- a/main/main.c
+++ b/main/main.c
@@ -2057,6 +2057,10 @@ int php_module_startup(sapi_module_struct *sf, zend_module_entry *additional_mod
 	zend_module_entry *module;
 
 #ifdef PHP_WIN32
+	WORD wVersionRequested = MAKEWORD(2, 0);
+	WSADATA wsaData;
+#endif
+#ifdef PHP_WIN32
 	php_os = "WINNT";
 
 	old_invalid_parameter_handler =
@@ -2142,6 +2146,14 @@ int php_module_startup(sapi_module_struct *sf, zend_module_entry *additional_mod
 	tzset();
 #endif
 
+#ifdef PHP_WIN32
+	/* start up winsock services */
+	if (WSAStartup(wVersionRequested, &wsaData) != 0) {
+		php_printf("\nwinsock.dll unusable. %d\n", WSAGetLastError());
+		return FAILURE;
+	}
+#endif
+
 	le_index_ptr = zend_register_list_destructors_ex(NULL, NULL, "index pointer", 0);
 
 	/* Register constants */
@@ -2404,6 +2416,11 @@ void php_module_shutdown(void)
 
 	zend_shutdown();
 
+#ifdef PHP_WIN32
+	/*close winsock */
+	WSACleanup();
+#endif
+
 	/* Destroys filter & transport registries too */
 	php_shutdown_stream_wrappers(module_number);
 
diff --git a/win32/dllmain.c b/win32/dllmain.c
index 2e5151d..1c34fb1 100644
--- a/win32/dllmain.c
+++ b/win32/dllmain.c
@@ -40,9 +40,6 @@ BOOL WINAPI DllMain(HINSTANCE inst, DWORD reason, LPVOID dummy)
 	switch (reason)
 	{
 		case DLL_PROCESS_ATTACH:
-			WORD wVersionRequested = MAKEWORD(2, 0);
-			WSADATA wsaData;
-
 			/*
 			 * We do not need to check the return value of php_win32_init_gettimeofday()
 			 * because the symbol bare minimum symbol we need is always available on our 
@@ -62,18 +59,12 @@ BOOL WINAPI DllMain(HINSTANCE inst, DWORD reason, LPVOID dummy)
 				fprintf(stderr, "ioutil initialization failed");
 				return ret;
 			}
-
-			ret = ret && (0 == WSAStartup(wVersionRequested, &wsaData));
-			if (!ret) {
-				fprintf(stderr, "winsock initialization failed %d", WSAGetLastError());
-				return ret;
-			}
 			break;
+#if 0 /* prepared */
 		case DLL_PROCESS_DETACH:
-			WSACleanup();
+			/* pass */
 			break;
 
-#if 0 /* prepared */
 		case DLL_THREAD_ATTACH:
 			/* pass */
 			break;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.