Bugs Fixed
7264: Builtins: archive: xml_parse cannot handle empty tag closure /> without leading whitespace 10930: Builtins: archive: xml_parse does not handle HTML/SGML comments without at least one space after the opening "<!--" 12119: Builtins: archive: xml_parse: Content containing an xml processing instruction includes the text "?xmlxml" in the value attribute of the toplevel member 11565: Builtins: system: miva_array_sort copies array elements 5593: Builtins: template: Expression compiler does not catch invalid expressions, resulting in Stack underflows at template runtime 5800: Builtins: template: Feature Request: mvt:break and mvt:continue for foreach loops 10677: Builtins: template: Add mvt:whilestop and mvt:whilecontinue tags 11629: Builtins: template: Mvt:eval doesn't have a way to escape quotation marks. 11501: Compiler: MvEVAL within MvREFERENCEARRAY causes a Runtime error 11566: Compiler: Cannot MvINCLUDE an empty file 11738: Compiler: Compiler has no mechanism to restrict the number of files it opens 11739: Compiler: MvINCLUDE "cannot open file" error messages don't include the underlying filesystem error text 11847: Compiler: Inconsistency in allowed variable names 12771: Compiler: MvDO with too many open square brackets gives unfriendly error 12978: Compiler: Compiler generates no output when a file contains nested inline MvDOs 14636: Compiler: Cannot compile an empty file 14652: Compiler: Compiler does not consistently output unrecognized function error messages 14678: Compiler: Missing parentheses errors in inline MvDO expressions are reported differently than in normal functions 11990: IIS Integration: ISAPI VM leaks memory in the length of the HTTP_COOKIE environment variable when log cookie is configure 11991: IIS Integration: ISAPI VM leaks memory when errors occur during processing of POSTed data 10816: Miva Mia: s.arg1 is only set when query parameters are present 12137: MivaSQL: Internal server error returned when Mivasql can't handle a sql between statement. 14666: MivaSQL: Missing comma in SELECT list results in output columns silently being ignored 4948: MVM UNIX CGI: CGIApplication opens the initial script file multiple times 6913: MVM Win32: s.dyn_tm_usec is milliseconds on Win32 systems, rather than microseconds 6957: MySQL Connector: recno is incorrect when a row contains BLOB data over 4096 bytes 6378: Virtual Machine: Dictionary growth can invalidate stack entries, leading to a crash 10333: Virtual Machine: Non-fatal MvDO_Errors sometimes cause a fatal "stack underflow" error 10890: Virtual Machine: Multiline SMTP greeting leads to out of sync conversation with remote server 11276: Virtual Machine: Multiple Content-Length headers when miva_output_header() is used to output an explicit value 11337: Virtual Machine: MvCALL does not support SNI 11628: Virtual Machine: Engine does not properly validate certificate host names containing embedded nulls 11994: Virtual Machine: Errors which occur when loading or validating the configuration can cause a VM crash 12027: Virtual Machine: CRYPT operator reads uninitialized memory and potentially embeds ASCII nulls in its output when the right operand is shorter than 2 characters 12248: Virtual Machine: CRYPT implementation is not thread safe 12644: Virtual Machine: CGI VM should more aggressively capture output write errors 12776: Virtual Machine: MvDO into bad file within an ELSEIF EXPR and incorrect output errors occur 12972: Virtual Machine: NULL byte injection in file upload 13602: Virtual Machine: MvCALL TYPE=RAW truncates binary data at the first NULL byte 14359: Virtual Machine: Certificate hostname matching does not properly handle IDNA prefixes 14543: Virtual Machine: CGI VM does not populate s.apitype unless the SERVER_NAME environment variable is present 14621: Virtual Machine: Dictionary entries are not validated for invalid offsets and sizes 10016: Virtual Machine Installation: Readme.txt contains a typo and is missing instructions for 3.x installs
New Features
- MvCALL now uses HTTP/1.1 for requests and supports responses returned with chunked Transfer-Encoding.
- SNI (Server Name Indication) is now supported for SSL/TLS connections. New configuration option MvCONFIG_SSL_SNI (environment) or "usesni" (3.x) controls whether the TLS hostname extension is set, and may contain one of the following values:
- auto: (default) SNI is enabled for OpenSSL 1.x and newer, disabled for OpenSSL 0.9.x and older (due to bugs in the older implementations)
- 0: SNI is disabled for all OpenSSL versions
- 1: SNI is enabled for all OpenSSL versions
MivaSQL Changes
- A new function, LENGTH( field ) may now be used in MivaSQL queries. The function returns the length, in bytes, of the value passed to it.
- MivaSQL now supports BETWEEN x AND y in SELECT queries.
StoreMorph Changes
- Quotation marks in StoreMorph expression constants may now be escaped with a backslash. Example: <mvt:eval expr="'<product count=\"80\">'" />
- New StoreMorph tags <mvt:foreachcontinue />, <mvt:foreachstop />, <mvt:whilecontinue /> and <mvt:whilestop /> allow greater control of foreach and while loops.
New Template Language Updates with Miva Empresa 5.20 Engine
New API Functions
char *mvVariable_Value_NS( mvVariable variable, int *length ) Returns a string containing the value of "variable", with internal ASCII NULLs removed. *length receives the new length of the string. The return value is NULL terminated. mvHTTPResponse mvNetwork_HTTP_Request( mvProgram program, const char *method, const char *url, double http_version, const char *content, const char *contenttype, int contentlength ) Makes an HTTP request using the protocol version specified by "http_version". The remaining parameters are identical to mvNetwork_Open_URL. Returns an mvHTTPResponse object, or NULL on failure. int mvHTTPResponse_Status_Code( mvHTTPResponse response ) Returns the numeric HTTP response code of a response returned by mvNetwork_HTTP_Request.
int mvHTTPResponse_Content_Length( mvHTTPResponse response ) Returns the value of the Content-Length response header (if specified by the server).
int mvHTTPResponse_Read( mvHTTPResponse response, char *buffer, int size ) Reads "size" bytes from "response", storing the result in "buffer". Returns the number of bytes read, or -1 on error.
void mvHTTPResponse_Close( mvHTTPResponse response ) Closes an mvHTTPResponse and frees all associated memory.
const char *mvHTTPResponse_Error( mvProgram program, mvHTTPResponse response ) Returns a textual description of an error returned by mvHTTPResponse_Read.
|