[09/Dec/2022:16:48:07 -0700] [192.168.1.2] /virtual-server/index.cgi : Perl execution failed : Modification of a read-only value attempted at /usr/share/webmin/virtual-server/virtual-server-lib-funcs.pl line 923.
As for my back… Yes, I’m doing amaaazingly well. In fact, better than I could believe. Bottom line (for the many who have, or know someone with, back issues): a couple of years ago the technology for a large fraction of back surgeries changed. As long as they only need to remove stuff (“decompression”) and not put anything in like screws and spacers (“fusion”), it can now be done using digital microscope and live xray (not laparoscopic/endoscopic)… outpatient instead of staying in the hospital. I went home four hours after arriving, gently exercised the next morning, and was done with pain meds three days later! Eight weeks and I’m no longer restricted from any activities …
My advice to older friends now: don’t wait. Find out if you can get your back issue fixed now; you don’t want to wait for it to get worse! (Fusion surgery is still a big deal with long recovery and risk of complication.)
@Jamie , @Ilia - I did some code reading to attempt understanding of why there’s a read-only value involved at all (since read-only is not exactly a normal Perl concept )
Not at all sure I’ve identified the real issue, however I did note something that appears potentially dangerous. See also the link below to a list of reasons for such errors:
In list_domains() and many other subs in virtual-server-lib-funcs.pl (and a few other places in the source), a number of temp variables are defined as “local” rather than “my”. This can have huge consequences and I wonder if those who wrote the code understood the implications at the time?***
my foo defines a separate fully local-scope variable foo. It is used instead of any global of the same name. It is not visible to any routine called from the current scope (unless passed in.)
local foo dynamically redefines global variable foo, and that variable becomes visible to any routines called from within the current context. This remains true until the current context exits.
Obviously they are not interchangeable. Obviously my is what you want for truly local vars.
You’re right about the use of local … a lot of that code was written a long time ago, and local was the wrong choice. I’m slowly going through and switching over to my. It’s a bit complex though, as there are a few cases where local is actually required, so we can’t just do a global search and replace.
In my case, I have a hidden domain with associated users, and an aliased domain. The aliased domain is what is publicly visible. Works great in postfix (has worked nicely for over 20 years!)… but yes… VirtualMin thinks there are no associated users in the install
I will try to find time to work out why the users are invisible.