Supported specifications:
The module implements the GetServerName parts of URL_Manager and preprocesses each label in the servername by first validating the characters by testing against character conversion lists and blacklists, then converting it to punycode, if necessary, before finally recombining it with the rest of the name. The module also controls the revers process.
API documentation generated by Doxygen contains all necessary information for the external APIs.
The module is small.
Most of internal module functions handles OOM by LEAVing, and the caller must TRAP errors and handle them.
In the case of LEAVE functions the caller must TRAP the errors, and handle the OOM situations.
The module is client push based, the caller request an action and gets a result.
Most of the operations are performed in the fixed buffers stored in the module object, but the URL_Manager parts do allocate through the URL module's ServerName manager code
Usually large objects are allocated
In most cases stack consumption should be less than 300 bytes.
The module uses 3 buffers of 256 unicode characters in the module object
There are also some const arrays used for processing characters. These may total a few thousand 32-bit unichars and associated integer flags. Most have been collected in a single array for processing efficiency and are coded for ranges to reduce footprint.
Additionally the module uses the temporary buffers of the URL_Manager (some functions are implemented in this moduele) and my increase these to more than 5 times the input servername, in order to handle large punycoded servernames.
No caching is performed. All long term storage is inside ServerName objects
Temp buffers are destroyed on exit.
No shared tempbuffers are used.
At present there are no opportunities to tune memory use.
Selftests, but they do not check memory usage.
Selftests, ordinary surfing to sites using international characters in their hostnames or domains.
The code processes one label at a time
No improvements are planned related to memeory