summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main/main.c17
-rw-r--r--win32/dllmain.c13
2 files changed, 19 insertions, 11 deletions
diff --git a/main/main.c b/main/main.c
index daa8235406..9e139eff72 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 2e5151dcf9..1c34fb1b26 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;