summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorLeigh <leight@gmail.com>2012-06-26 14:57:10 +0100
committerArpad Ray <arraypad@gmail.com>2013-06-27 13:06:22 +0100
commitb794cce4fd4a6158002f3e8a814a30891cefbcde (patch)
tree5fdf8f2a899135ec329878446d2ad6918d9fa3ab /ext
parent074c26a68b9484cd51734a70bb91b8afb585c212 (diff)
downloadphp-git-b794cce4fd4a6158002f3e8a814a30891cefbcde.tar.gz
Tests, fixes and optimisations
* Amended existing tests to cater for new functionality. * Implemented fixes and optimisations recommended by NikiC * Added create_sid to the registered interface. This was breaking tests. It also now breaks BC for people implementing the interface directly instead of extending the class.
Diffstat (limited to 'ext')
-rw-r--r--ext/session/mod_user.h2
-rw-r--r--ext/session/mod_user_class.c8
-rw-r--r--ext/session/session.c2
-rw-r--r--ext/session/tests/session_set_save_handler_class_002.phpt4
-rw-r--r--ext/session/tests/session_set_save_handler_iface_001.phpt4
5 files changed, 14 insertions, 6 deletions
diff --git a/ext/session/mod_user.h b/ext/session/mod_user.h
index fd149ccff4..6b2998c426 100644
--- a/ext/session/mod_user.h
+++ b/ext/session/mod_user.h
@@ -24,6 +24,6 @@
extern ps_module ps_mod_user;
#define ps_user_ptr &ps_mod_user
-PS_FUNCS(user);
+PS_FUNCS_SID(user);
#endif
diff --git a/ext/session/mod_user_class.c b/ext/session/mod_user_class.c
index 340c2ca97a..ea53af9ebe 100644
--- a/ext/session/mod_user_class.c
+++ b/ext/session/mod_user_class.c
@@ -148,12 +148,12 @@ PHP_METHOD(SessionHandler, create_sid)
{
char *id;
- zend_parse_parameters_none();
+ if (zend_parse_parameters_none() == FAILURE) {
+ return;
+ }
id = PS(default_mod)->s_create_sid(&PS(mod_data), NULL TSRMLS_CC);
- RETVAL_STRING(id, 1);
- efree(id);
- return;
+ RETURN_STRING(id, 0);
}
/* }}} */
diff --git a/ext/session/session.c b/ext/session/session.c
index 4b93ffa74a..d8de5769fc 100644
--- a/ext/session/session.c
+++ b/ext/session/session.c
@@ -2083,6 +2083,7 @@ static const zend_function_entry php_session_iface_functions[] = {
PHP_ABSTRACT_ME(SessionHandlerInterface, write, arginfo_session_class_write)
PHP_ABSTRACT_ME(SessionHandlerInterface, destroy, arginfo_session_class_destroy)
PHP_ABSTRACT_ME(SessionHandlerInterface, gc, arginfo_session_class_gc)
+ PHP_ABSTRACT_ME(SessionHandlerInterface, create_sid, arginfo_session_class_create_sid)
{ NULL, NULL, NULL }
};
/* }}} */
@@ -2096,7 +2097,6 @@ static const zend_function_entry php_session_class_functions[] = {
PHP_ME(SessionHandler, write, arginfo_session_class_write, ZEND_ACC_PUBLIC)
PHP_ME(SessionHandler, destroy, arginfo_session_class_destroy, ZEND_ACC_PUBLIC)
PHP_ME(SessionHandler, gc, arginfo_session_class_gc, ZEND_ACC_PUBLIC)
-/* Added to the class but not the interface, to maintain backwards compatibility */
PHP_ME(SessionHandler, create_sid, arginfo_session_class_create_sid, ZEND_ACC_PUBLIC)
{ NULL, NULL, NULL }
};
diff --git a/ext/session/tests/session_set_save_handler_class_002.phpt b/ext/session/tests/session_set_save_handler_class_002.phpt
index 6fb831f695..4195a163a7 100644
--- a/ext/session/tests/session_set_save_handler_class_002.phpt
+++ b/ext/session/tests/session_set_save_handler_class_002.phpt
@@ -53,6 +53,10 @@ class MySession2 extends SessionHandler {
}
return true;
}
+
+ public function create_sid() {
+ return parent::create_sid();
+ }
}
$handler = new MySession2;
diff --git a/ext/session/tests/session_set_save_handler_iface_001.phpt b/ext/session/tests/session_set_save_handler_iface_001.phpt
index 39a4b9975b..0576341a10 100644
--- a/ext/session/tests/session_set_save_handler_iface_001.phpt
+++ b/ext/session/tests/session_set_save_handler_iface_001.phpt
@@ -53,6 +53,10 @@ class MySession2 implements SessionHandlerInterface {
}
return true;
}
+
+ public function create_sid() {
+ return md5(mt_rand());
+ }
}
$handler = new MySession2;