MDL-68696 sessions: Fixed redis session handler for readonly

In 39770792ca read-only sessions were allowed.
In the redis case, as called from the mobile application,
this can lead to returning 'false' for session rather than ''.
This commit is contained in:
Don Bowman
2020-05-15 12:09:15 -04:00
parent 206e179df5
commit cf7b00b8cf
2 changed files with 12 additions and 2 deletions
+4 -2
View File
@@ -259,8 +259,10 @@ class redis extends handler {
$this->lock_session($id);
}
$sessiondata = $this->connection->get($id);
if ($sessiondata === false && $this->requires_write_lock()) {
$this->unlock_session($id);
if ($sessiondata === false) {
if ($this->requires_write_lock()) {
$this->unlock_session($id);
}
return '';
}
$this->connection->expire($id, $this->timeout);
+8
View File
@@ -91,6 +91,14 @@ class core_session_redis_testcase extends advanced_testcase {
$this->redis->close();
}
public function test_normal_session_read_only() {
$sess = new \core\session\redis();
$sess->set_requires_write_lock(false);
$sess->init();
$this->assertSame('', $sess->handler_read('sess1'));
$this->assertTrue($sess->handler_close());
}
public function test_normal_session_start_stop_works() {
$sess = new \core\session\redis();
$sess->init();