From 94783496f1a7a84f7f828e9cddf73b80db3a9e3c Mon Sep 17 00:00:00 2001 From: moodler Date: Mon, 13 Aug 2007 09:53:04 +0000 Subject: [PATCH] Added some robustness because on at least two occasions the mnet_localhost_id has been spontaneously reset to a new entry, which causes havoc as no-one can log in. MDL-10828 --- mnet/environment.php | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/mnet/environment.php b/mnet/environment.php index 6fc97a2ecf..f3cfb617bf 100644 --- a/mnet/environment.php +++ b/mnet/environment.php @@ -30,24 +30,30 @@ class mnet_environment { // Bootstrap the object data on first load. if (empty($CFG->mnet_localhost_id) ) { - - $this->wwwroot = $CFG->wwwroot; - if(empty($_SERVER['SERVER_ADDR'])) { - // SERVER_ADDR is only returned by Apache-like webservers - $my_hostname = mnet_get_hostname_from_uri($CFG->wwwroot); - $my_ip = gethostbyname($my_hostname); // Returns unmodified hostname on failure. DOH! - if($my_ip == $my_hostname) { - $this->ip_address = 'UNKNOWN'; + if (!$CFG->mnet_localhost_id = get_config(NULL, 'mnet_localhost_id')) { // Double-check db + $this->wwwroot = $CFG->wwwroot; + if (empty($_SERVER['SERVER_ADDR'])) { + // SERVER_ADDR is only returned by Apache-like webservers + $my_hostname = mnet_get_hostname_from_uri($CFG->wwwroot); + $my_ip = gethostbyname($my_hostname); // Returns unmodified hostname on failure. DOH! + if ($my_ip == $my_hostname) { + $this->ip_address = 'UNKNOWN'; + } else { + $this->ip_address = $my_ip; + } } else { - $this->ip_address = $my_ip; + $this->ip_address = $_SERVER['SERVER_ADDR']; } - } else { - $this->ip_address = $_SERVER['SERVER_ADDR']; - } - $this->id = insert_record('mnet_host', $this, true); - set_config('mnet_localhost_id', $this->id); - $this->get_keypair(); + if ($existingrecord = get_record('mnet_host', 'ip_address', $this->ipaddress)) { + $this->id = $existingrecord->id; + } else { // make a new one + $this->id = insert_record('mnet_host', $this, true); + } + + set_config('mnet_localhost_id', $this->id); + $this->get_keypair(); + } } else { $hostobject = get_record('mnet_host','id', $CFG->mnet_localhost_id); if(is_object($hostobject)) { -- 2.39.5