Reference13r3:Release Notes SDK

From innovaphone wiki
Jump to navigation Jump to search
There are also other versions of this article available: Reference13r1 | Reference13r2 | Reference13r3 (this version) | Reference14r1 | Reference14r2

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 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

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 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


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







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




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 This can be done by using wildcards in entries of the javascript.eval array in the config.json.


eval : [




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


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.