Skip to content

Commit 39cb8fe

Browse files
committed
Fix PostgreSQL startup routine in thread-safe mode
1 parent bf60933 commit 39cb8fe

File tree

6 files changed

+42
-52
lines changed

6 files changed

+42
-52
lines changed

ext/mssql/php_mssql.c

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -83,26 +83,6 @@ DLEXPORT zend_module_entry *get_module(void) { return &mssql_module_entry; };
8383

8484
#define CHECK_LINK(link) { if (link==-1) { php_error(E_WARNING,"MS SQL: A link to the server could not be established"); RETURN_FALSE; } }
8585

86-
static PHP_INI_DISP(display_link_numbers)
87-
{
88-
char *value;
89-
90-
if (type==PHP_INI_DISPLAY_ORIG && ini_entry->modified) {
91-
value = ini_entry->orig_value;
92-
} else if (ini_entry->value) {
93-
value = ini_entry->value;
94-
} else {
95-
value = NULL;
96-
}
97-
98-
if (value) {
99-
if (atoi(value)==-1) {
100-
PUTS("Unlimited");
101-
} else {
102-
php_printf("%s", value);
103-
}
104-
}
105-
}
10686

10787
PHP_INI_BEGIN()
10888
STD_PHP_INI_BOOLEAN("mssql.allow_persistent", "1", PHP_INI_SYSTEM, OnUpdateBool, allow_persistent, php_mssql_globals, mssql_globals)

ext/mysql/php_mysql.c

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -255,28 +255,6 @@ static PHP_INI_MH(OnMySQLPort)
255255
}
256256

257257

258-
static PHP_INI_DISP(display_link_numbers)
259-
{
260-
char *value;
261-
262-
if (type==PHP_INI_DISPLAY_ORIG && ini_entry->modified) {
263-
value = ini_entry->orig_value;
264-
} else if (ini_entry->value) {
265-
value = ini_entry->value;
266-
} else {
267-
value = NULL;
268-
}
269-
270-
if (value) {
271-
if (atoi(value)==-1) {
272-
PUTS("Unlimited");
273-
} else {
274-
php_printf("%s", value);
275-
}
276-
}
277-
}
278-
279-
280258
PHP_INI_BEGIN()
281259
STD_PHP_INI_BOOLEAN("mysql.allow_persistent", "1", PHP_INI_SYSTEM, OnUpdateInt, allow_persistent, php_mysql_globals, mysql_globals)
282260
STD_PHP_INI_ENTRY_EX("mysql.max_persistent", "-1", PHP_INI_SYSTEM, OnUpdateInt, max_persistent, php_mysql_globals, mysql_globals, display_link_numbers)

ext/pgsql/pgsql.c

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#endif
2727

2828
#include "php.h"
29+
#include "php_ini.h"
2930
#include "ext/standard/php_standard.h"
3031
#include "php_pgsql.h"
3132
#include "php_globals.h"
@@ -75,7 +76,7 @@ function_entry pgsql_functions[] = {
7576
};
7677

7778
zend_module_entry pgsql_module_entry = {
78-
"PostgreSQL", pgsql_functions, PHP_MINIT(pgsql), NULL, PHP_RINIT(pgsql), NULL, NULL, STANDARD_MODULE_PROPERTIES
79+
"PostgreSQL", pgsql_functions, PHP_MINIT(pgsql), PHP_MSHUTDOWN(pgsql), PHP_RINIT(pgsql), NULL, NULL, STANDARD_MODULE_PROPERTIES
7980
};
8081

8182
#if COMPILE_DL
@@ -121,18 +122,16 @@ static void _free_result(pgsql_result_handle *pg_result)
121122
efree(pg_result);
122123
}
123124

125+
PHP_INI_BEGIN()
126+
STD_PHP_INI_BOOLEAN("pgsql.allow_persistent", "1", PHP_INI_SYSTEM, OnUpdateInt, allow_persistent, php_pgsql_globals, pgsql_globals)
127+
STD_PHP_INI_ENTRY_EX("pgsql.max_persistent", "-1", PHP_INI_SYSTEM, OnUpdateInt, max_persistent, php_pgsql_globals, pgsql_globals, display_link_numbers)
128+
STD_PHP_INI_ENTRY_EX("pgsql.max_links", "-1", PHP_INI_SYSTEM, OnUpdateInt, max_links, php_pgsql_globals, pgsql_globals, display_link_numbers)
129+
PHP_INI_END()
130+
131+
124132
static void php_pgsql_init_globals(PGLS_D)
125133
{
126134
PGG(num_persistent) = 0;
127-
if (cfg_get_long("pgsql.allow_persistent",&PGG(allow_persistent))==FAILURE) {
128-
PGG(allow_persistent)=1;
129-
}
130-
if (cfg_get_long("pgsql.max_persistent",&PGG(max_persistent))==FAILURE) {
131-
PGG(max_persistent)=-1;
132-
}
133-
if (cfg_get_long("pgsql.max_links",&PGG(max_links))==FAILURE) {
134-
PGG(max_links)=-1;
135-
}
136135
}
137136

138137
PHP_MINIT_FUNCTION(pgsql)
@@ -142,6 +141,8 @@ PHP_MINIT_FUNCTION(pgsql)
142141
#else
143142
php_pgsql_init_globals(PGLS_C);
144143
#endif
144+
145+
REGISTER_INI_ENTRIES();
145146

146147
le_link = register_list_destructors(_close_pgsql_link,NULL);
147148
le_plink = register_list_destructors(NULL,_close_pgsql_plink);
@@ -158,6 +159,13 @@ PHP_MINIT_FUNCTION(pgsql)
158159
}
159160

160161

162+
PHP_MSHUTDOWN_FUNCTION(pgsql)
163+
{
164+
UNREGISTER_INI_ENTRIES();
165+
return SUCCESS;
166+
}
167+
168+
161169
PHP_RINIT_FUNCTION(pgsql)
162170
{
163171
PGLS_FETCH();

ext/pgsql/php_pgsql.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ extern zend_module_entry pgsql_module_entry;
5959
#endif
6060

6161
PHP_MINIT_FUNCTION(pgsql);
62+
PHP_MSHUTDOWN_FUNCTION(pgsql);
6263
PHP_RINIT_FUNCTION(pgsql);
6364
PHP_FUNCTION(pg_connect);
6465
PHP_FUNCTION(pg_pconnect);

main/php_ini.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,28 @@ PHP_INI_DISP(php_ini_color_displayer_cb)
331331
}
332332

333333

334+
PHP_INI_DISP(display_link_numbers)
335+
{
336+
char *value;
337+
338+
if (type==PHP_INI_DISPLAY_ORIG && ini_entry->modified) {
339+
value = ini_entry->orig_value;
340+
} else if (ini_entry->value) {
341+
value = ini_entry->value;
342+
} else {
343+
value = NULL;
344+
}
345+
346+
if (value) {
347+
if (atoi(value)==-1) {
348+
PUTS("Unlimited");
349+
} else {
350+
php_printf("%s", value);
351+
}
352+
}
353+
}
354+
355+
334356
static int php_ini_displayer(php_ini_entry *ini_entry, int module_number)
335357
{
336358
if (ini_entry->module_number != module_number) {

main/php_ini.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ php_ini_entry *get_ini_entry(char *name, uint name_length);
7070
PHPAPI int php_ini_register_displayer(char *name, uint name_length, void (*displayer)(php_ini_entry *ini_entry, int type));
7171
PHPAPI PHP_INI_DISP(php_ini_boolean_displayer_cb);
7272
PHPAPI PHP_INI_DISP(php_ini_color_displayer_cb);
73+
PHPAPI PHP_INI_DISP(display_link_numbers);
7374

7475
#define PHP_INI_BEGIN() static php_ini_entry ini_entries[] = {
7576
#define PHP_INI_END() { 0, 0, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, 0, 0, NULL } };

0 commit comments

Comments
 (0)