ReleaseNotes13r3:SDK
This is the SDK 13r3 Release Notes Document.
Service Releases are planned for the second monday each month.
Please see the disclaimer before using the information presented here!
SDK 13r3
13r3 Service Release 1 (137766)
137056 - SDK docu: fixed style of the SDK migration tutorial
Stylesheet path was incorrect.
137037 - SDK: build-release.bat produced unnecessary whitespace in the files
An unnecessary whitespace in the filelist file caused problems with the App Store.
13r3 Service Release 10 (137898)
152646 - Avatar API: Support for SIP-URIs with special characters
Sometimes profile picture was not displayed in Phone-App.
If user's own sip-id contains blanks the picture URL of the calling/called user is illegal.
User's own sip-id is used as URL parameter and must be escaping rules must be applied.
152127 - http_client: HTTP result should be reset with new requests
There was a problem, when multiple successive HTTP requests were done using the same HTTP client.
After starting a new request, GetHttpResult() could return information that was related to the previous request.
13r3 Service Release 11 (137919)
155359 - HTTPClient: wrong timeout shutdown for authenticated connections which last longer than the used timeout
This e.g. caused failing backups with HTTP PUT which last longer than one minute.
13r3 Service Release 12 (137926)
157331 - SDK: Corrected the name of the USocket::SocketRecvFromResult() parameters. Must be srcAddr, srcPort.
13r3 Service Release 16 (137962)
13r3 Service Release 17
167296 - Added new legal information for buildroot 2024.02.1
13r3 Service Release 18 (137975)
174074 - SDK: changed build.bat to check exit code of make
13r3 Service Release 2 (137786)
137212 - C++ SDK: WewbserverPlugin set StatusCode - Merge to 13r3 and 13r2
138475 - Clarified IHTTPClient::Connected function in documentation
True, if the HTTP client is connected, else false. This just reflects the socket connection state and does not mean, that there is not a socket connect already running!
You can use this function for debugging purposes but not for a state machine!
137366 - JS SDK: Add SmtpClient
We added a new library for sending emails from JS app services.
137924 - PostgreSQL: fixed possible deadlock after a DatabaseError with multiple parallel transactions
If a transaction was rolled back due to a database error and further transactions were waiting, the database implementation might got stuck.
13r3 Service Release 3 (137803)
139292 - Allow longer DB values to be sent in JSON
Avoid app crash on db values longer than 16KB.
Allow up to 64KB.
140655 - HTTPClient: match authentication type case insensitively
If a server responds with BASIC instead of Basic, basic authentication should still work.
139530 - JS SDK: Don't take connection close as websocket error
If websocket transport connection is closed by client without Close frame being sent, this is no longer taken as an error.
The 'onclosed' handler is called instead of the 'onerror' handler.
140428 - SDK docu: Added description for sendSrc and sendSrcMore functions
The descriptions for functions sendSrc and sendSrcMore were missing in the AppWebsocket Connection documentation.
140740 - SDK docu: Extended JSON Library description
Explanation for the required certain order on adding of the properties is added.
140360 - SDK docu: Tutorial on Pagination in AppWebsocket JSON APIs
The tutorial shows how to use sendMoreSrc function of the AppWebsocket connection to transfer data from JSON APIs in multiple requests.
140184 - SDK docu: Various Fixes for App Store Guide
Fixed various typos, added info on app update.
139917 - SDK: AppWebsocket Connection function sendSrcMore handling of "more" property set to 1
The sendSrcMore function was stopping to make subsequent requests if "more" property was set to 1.
140427 - SDK: DbFiles List function extended by idOffset parameter
The "idOffset" parameter can be used together with "limit" to list files page by page.
140091 - SDK: DbFilesList delivers relative URLs
The "url" property of the DbFilesList message was delivering an absolute path, instead of a relative path, as it was stated in the documentation.
140109 - SDK: Extend DbFilesList by "more" mechanism
Enables to fetch the file list in multiple request by using "limit" and "more" properties.
140738 - SDK: Fix PBX manager plugin code in the App templates
Fixed possible unnecessary double assignement of the function body.
140095 - SDK: JavaScript App Service returns body on HTTP POST to dbfiles instance
The HTTP POST to a dbfiles instance of the Java Script App Service now returns a body with JSON payload indicating a succes of the upload and returning the id of the uploaded file: {"ok": true, "id": 1}.
13r3 Service Release 4 (137818)
141383 - ICommand read/write with unblocking IO
Previously used function fwrite/fread seem to hang in unknown circumstances if the running process crashed/exited.
Now read/write are used instead on non blocking file descriptors to avoid this.
142165 - PbxSignal: Attribute "api" was missing in "UnRegisterResult" message
Attributes "api" and src were missing in "UnRegisterResult" message.
142947 - SDK: Fix for logging output for prepared statements
The output of the ExecSQL(PS) in PostgreSQL prepared statements had an unintended character at the end.
142941 - SDK: JavaScript App Service returns body on HTTP POST to dbfiles instance on file delete command
No body was returned in the HTTP POST request if del parameter was set.
13r3 Service Release 5 (137834)
143223 - IDatabase::QueryPrint: added support for %pf
Added support for float/double with pointers.
143765 - innovaphone.Countries.js: use english Singapore instead of chinese name
There seems to be different possibilities and english is the most simple.
144058 - JS SDK: Added bytea hex support to Database Library
Enable queries on tables that contain columns with the bytea hex data type.
143900 - PhoneAdminApi: Pseudo Property is not send as json object if it is requested as property
143963 - SDK docu: JavaScript Runtime DbFilesList default value for limit fixed
The documented default value for limit property was stated as 10, but 50 was implemented.
144285 - SDK: Added chunked transfer support in HTTP POST to DbFiles
Chunked transfer to DbFiles via HTTP POST was not supported. Also files with size of 0 bytes where not supported.
144287 - SDK: Added support for file size, created and modified timestamps in DbFilesList
The DbFilesListResult message extended by the properties with file size, created and modified timestamps for a particular file.
144086 - SDK: HTTP POST to DbFiles shold have name parameter
HTTP POST requests to DbFiles in JavaScript Runtime are now rejected, if no filename was provided.
13r3 Service Release 6 (137840)
144266 - Add config mode for PbxPlugins
Add a new "pbx-manager" mode for the config library on the config.json file of the Generic App. With this the access rights to read/write config items can be set for appwebsocket connections coming from the Pbx Plugins.
144344 - Add new parameter type for Language::ReplaceArgs
Added LANGUAGE_PARAM_TYPE_DOUBLE for double/float values with precision support.
144337 - HTTPClient: Erroneously resend data when expecting authentication but receiving an HTTP OK
145351 - JS SDK: WebServer: Allow setting arbitrary status codes and texts in WebServerRequest.sendResponse
Example:
req.sendResponse(418, "I'm a teapot");
Nore: For the full functionality the current version of the Webserver must be installed on the App Platform. Older versions only support a subset of status codes and ignore the given status text.
144178 - Phone-App: Fix for external call info
Info provided by other apps using the com.innovaphone.phone API was displayed on wrong call.
144364 - SDK: Fixed default value for WebServerUrl in JavaScript Runtime
A slash separating the hostname and the instance path was missing.
144357 - SDK: Fixed file name in HTTP GET response from DbFiles of JavaScript Runtime
Sometimes the file name in the Content-Disposition header was corrupted.
144476 - SDK: httplib didnt check for HTTP 308 response code
144523 - SMTP service: fixed crash on unknown status code debug
13r3 Service Release 7 (137863)
146977 - lib1: Disable usage of alert(), prompt() and confirm() in apps
Those functions display a modal dialog that stop the execution of the whole browser window until the user clicks a button.
Therefore they must never be used in an app. To enforce that, we re-defined those functions to show a warning in the console, instead.
148224 - SDK: JS Runtime: Leaks when using DBFiles
147715 - SDK: Visual Studio plugin: Changed error message for mismatched platform type
And added solution description to the FAQ of the "Getting Started" article.
13r3 Service Release 8 (137877)
149248 - JS SDK: AppWebsocketClient: Fix buffer sizes
Recieved WebSocket messages can be up to 64KB (WS_MAX_DATA_SIZE). But the AppWebsocketClient only handled messages up to 32KB.
148781 - SDK docu: Updated supported Visual Studio versions
Clarified Visual Studio 2019 and Community Edition support
148740 - SDK mySQL: added default connect timeout of 10s
148787 - SDK: Added "maxIntern" and "tones" properties to the RCC API message UserInitializeResult
This properties delivers the settings provided in general config of the local PBX .
148719 - SDK: New PbxAdminApi function TestFilter
To check if filters allow for a user a number to be called or set as diversion
13r3 Service Release 9 (137886)
150213 - SDK: HTTP client: Support for all methods
Now the supported HTTP methods are: GET, PUT, POST, DELETE, HEAD, OPTIONS, TRACE, PROPFIND, MKCOL, COPY, MOVE, LOCK, UNLOCK, PROPPATCH, PATCH.
Also it is possible to send a request body and receive a response body for all methods, now.
The new functionality is available for both C++ App Serivces using IHTTPClient and JS App Services using HttpClient.
Main improvements in 13r3
131711 - Access Apis as logged-in user, when connecting to App Object
In 13r2 the rights of the app object were used instead of the rights of the logged in user.
Other improvements in 13r3
133436 - Added DNS retry support in HttpClient
If the socket connect to the first DNS resolution fails, the resolved IP address is marked unsuitable and a second DNS resolution is started, which may return a different address (e.g. first one is an IPv6 address and the second an IPv4 address).
If the socket connect to the second address also fails, the HttpClient gives up.
133031 - Added ECDH(E) library innovaphone.crypto.ecdh.js
This new library can be used for ECDH(E) key agreement.
It can be found in /web1/crypto/innovaphone.crypto.ecdh.js.
114351 - Added remAttribute() to ui1 lib
Corresponding to setAttribute(), but to remove a DOM attribute.
131348 - Added str::from_utf16() and str::to_utf16()
New functions for 'class str':
- str::from_utf16() converts a UTF-16 strings into UTF-8
- str::to_utf16() converts UTF-8 string into UTF-16
127858 - Added time conversion function to str library
to_time_iso8601
to_time_rfc1123
from_time_iso8601
from_time_rfc1123
from_time_rfc1036
from_time_ansi
120586 - AppWebsocketClient: added auto reconnect possibility
You can now enable an automatic reconnect mechanism with exponantial backoff timeout (1s -> 60s) within the Connect call.
You should then implement the new AppWebsocketClientDisconnected
callback so that your application knows if the client is currently disconnected.
118649 - FileSystem::ChangeMode returned false on success
true is now returned on success
119734 - FileSystem::ReadBinaryFile to read binary data
131496 - Fixed IPdfText::AddHTML to not add spaces on \r or \n
The function added a space for a \r or a \n before instead of ignoring the characters.
119753 - Handle server restart in PostgreSQL driver
A server restart may have not been correctly handled and forwarded to the application.
111794 - HTTP Client: fixed access of potentially uninitialized variable
126839 - HTTP client: Support for NTLMv2
119252 - JavaScriptRuntime: Support for HttpClient.responseHeader after connection is closed
The function did not return header fields, if the TCP connection was already closed.
This makes sense for HTTP 1.1 transfer with Connection: close.
131392 - JS SDK: Added FileSystem library
Only functionality for now:
- FileSystem.readFile
The library is needed for an infrastructural app by innovaphone. It should not be needed for gerneal apps.
131083 - JS SDK: HttpClient: Send GET/DELETE requests without content type
GET and DELETE requests are now sent without a Content-Type header.
133703 - lib1: Make src values created by ApiConsumer.Src globally unique
The src values were "apisrc-1", "apisrc-2", ...
Now they additionally contain a random value, e.g. "apisrc-28bc6ee6-1", "apisrc-28bc6ee6-2", ...
This adds to the robustness in cases when a consumer is reloaded and restarts without the provider knowing.
124199 - Made IDatabase::QueryPrint functions statiuc for more general purpose use
127038 - New API: com.innovaphone.autostart
Hidden apps that declare that API are autostarted by the myApps client.
Important: This mechanism is intended for hidden apps that provide services in the background, only. So the autostart is only done in combination with the hidden flag.
135590 - PbxAdminApi: GetNodes, GetGroups, GetBooleans - allow more instead of last
For compatibility with apiSendSrcMorde
121296 - Possibility to use a distinct SIP URI for badge count subscriptions
If AppInfo.presence is set to true, myApps creates a presence subscription to the App Service in order to monitor the badge count.
Now you can also specify a string containg a SIP URI, if the presence subscription should not be done to the app service directly, but to a different endpoint.
135944 - SDK docu: added hint for LIMIT and OFFSET value data types in database library
The value data type must be defined as 64-bit in the prepared statements.
131485 - SDK docu: Fix typos in HTTP Client docu
13r3\.git\sdk\common\service\http_client
13r3\.git\
grepWin
135144 - SDK docu: SDK migration from 13r2 to 13r3
Article describing changes in the SDK from 13r2 to 13r3 and upgrade scenarios.
132591 - SDK docu: TEXT-Interface documentation update
The TEXT-Interface documentation is adjusted to meet product release requirements.
132281 - SDK docu: typos fixed in WebSocket client and Webserver plugin docu
The typos in the libary documentation for WebSocket client and Webserver plugin were fixed.
132325 - SDK: added PbxAdminApi GetLocation function
The GetLocation function of the PbxAdminApi can be used to retrieve components of the WebSocket URI that can be used to establish a connection to specific PBX.
131707 - SDK: C++ template remove submodules include
Removed unnecessary include for submodules.mak
119529 - SDK: Config library (JavaScript) handling for Access Denied
Prevent "Uncaught TypeError: message.ConfigItems is undefined" if result of GetConfigItems or ConfigWrite was "AccessDenied"
135354 - SDK: Fixed an invalid pointer if IIoMux was deleted and created again.
123814 - SDK: JS Runtime: Possibility to read httpfiles from app service
AppInstance.httpfiles() lists all httpfiles.
AppInstance.httpfile(filename, binary) returns the file content for the given file name.
123803 - SDK: JS Runtime: Support for wildcards in eval array in config.json
You can execute all JS files in a subtree of the httpfiles.zip. This can be done by using wildcards in entries of the javascript.eval array in the config.json.
Example:
eval : [
"subfolder/*",
"service.js"
]
112276 - SDK: json_io - protect against messages with too many items
Decoding messages with more items than JSON_MAX_ITEMS led to a trap.
133714 - SDK: SNI not provided on SMTP start TLS connections
124421 - TCP Socket: accept() with EAGAIN is ok and shouldn't lead to error logs
Changed some log output too.
131741 - Update for innovaphone.ui1.Switch onchange callback
The onchange event handler callback provides 'obj' now.
116277 - Updated conference.htm
Added documentation of FTY_VIDEO_PRIORITY and FTY_VIDEO_CAPABILITIES.
126164 - Websocket-Client: Support for HTTP redirect
126969 - ZIP library: Add static functions for encoding ZIP headers
Added new functions:
- Zip::WriteLocalFileHeader
- Zip::WriteCentralDirectoryHeader
- Zip::WriteEndOfCentralDirectory
Can be used for applications that like to create ZIP files on the fly.