Working through the night to sort the code is tedious, but paid off.
The issues I found in my RADIUS code were subtle. And were down to state machines and some assumptions in original design (valid at the time). The error needed a complex combination of enough customers on line and the right chances that one of them is a wholesale (L2TP relay) customer at the right point in time. It involved timing of the RADIUS and L2TP and thwarted all my off line testing.
I plugged several loopholes, but this is a fun bit of software design logic. I have made a number of changes that are "defensive coding"...
My older code made assumptions and was thwarted by changes due to the way the new RADIUS code worked that undermined those.
The new changes now are to make the code safe for those assumptions. Make the code not make them and work regardless of state change logic that I may dream up in the future.
It is like assuming that there are other developers on the project that are "out to get you" and making sure that nothing they can do will break things. The irony is where that other developer is another instance of yourself, a few years later, making new code for good reasons and forgetting the constraints on the old design.
The end result is code that is safer for future developments, which is good. It is technically less efficient, but I still find it hard to get core CPU usage over 1% on the most heavily loaded LNSs, so I really did not need to bother.
Anyway, end of the day, I have been snowed under. I am no longer writing more broken lines of code than working lines of code, and I have a bottle of SoCo that is a lot less full than it was...
Now I have to catch up! We are rolling out the updates. I have a huge list of stuff to do that I have been putting off. Some odd RADIUS handling on the servers (linux) I need to re-check. Summer time upsetting that! Much still to do.
When I am finally caught up I can progress the use of this new, well tested and robust, RADIUS code for VoIP server use, at last. I am several weeks behind my plan on this, but it is all progress.
The new VoIP system will, when finished, be ready to replace out core VoIP services. That will be another challenging time and lots of advance testing. It will create a new platform that can scale massively.
On top of all of that we finally have a new logo :-)
It would help if the cat did not leap over my desk, take out a mug of soup, and make my computer all sticky!
2013-05-01
Subscribe to:
Post Comments (Atom)
Don't use UPS to ship to UK
I posted about shipping and importing and tax and duty - general info. But this is specific. DON'T USE UPS! I had assumed the UPS issue ...
-
Broadband services are a wonderful innovation of our time, using multiple frequency bands (hence the name) to carry signals over wires (us...
-
For many years I used a small stand-alone air-conditioning unit in my study (the box room in the house) and I even had a hole in the wall fo...
-
It seems there is something of a standard test string for anti virus ( wikipedia has more on this). The idea is that systems that look fo...
I'm sure I'm not going to be the first to ask this, but if you're A&A, why does the new logo say "AB"?
ReplyDeleteIt clearly doesn't, now, does it?
DeleteIt is not a "b" or a "p" as they are a different shape.
I have heard suggestions of "owl", "gun barrel", "hand cuffs", "toilet seats", even "boobs", all of which I can vaguely see, but it is quite clearly not "ab", and very much not "AB".
:-)
Sorry, "ab" was the first thing I saw and when I asked my wife what she thought it was, she said the same thing.
Deleteab was the first thing I saw.. and unfortunately having seen it it's impossible not to, now :p
DeleteNot unlike 'Sky onc'.. Just the way my brain works I guess.
I saw ab too
DeleteWhere is new logo ! X
ReplyDeleteEverywhere! Web sites, twitter, facebook, business cards, faceplates, dongles, power plugs, office door, pieces of slate, engraved on back of my ipad, screen background on Alex's PC.
DeleteDefinitely ab though.
ReplyDeleteThe logo looks a bit like an owl.
ReplyDelete