aboutsummaryrefslogtreecommitdiffstats
path: root/CHANGELOG
blob: fea5a3c30a04fa8abf197f2e9a5612e3e931f2d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
Qt License Service changelog

####################

Changes in 3.1.0
- [QLS-675] curl: force HTTPS by default

####################

Changes in 3.0.1
- [QLS-883] Linux: fix wrong CA bundle path in prebuilt binaries
- [QLS-860] Build License Service against static openssl and curl
- [QLS-857] Fix CIP launching on-demand service in a new console window on Windows
- [QLS-852] Fix wrong application data path on macOS
- [QLS-804] Fix early renewal and late releasing of reservation
- [QLS-791] Fix configuration for the license renewal endpoint

####################

Changes in 3.0.0
- Coco legacy drop-in support removed
    - Stop listening the legacy TCP port
- Add macOS service support
    - Documents updated to describe macOS-specifics
    - Build and install/uninstall scripts updated to handle both macOS and Linux
    - build_linux.sh script renamed to build_unix.sh
- Automatic license resolution
    - No need for client side 'qtlicenseservice.ini' file anymore
    - The server decides the suitable license for the client
- Long-term reservation behavioral change
    - The long-term reservation for a give license is controlled by the ACL configuration on the
      server side
    - Remove LicenseToolClient class
- Unified license model
    - Initial support for the new license model that will cover all the products and features
    - Prepare for consumer_reservation_type handling
    - Update license structure to support process level reservations
    - Add method to check if "valid_from" time is yet started
    - [QLS-638] qtlicensetool: reimplement --reservations option for unified license
    - [QLS-703] Do not allow using licenses where valid_from is in future
    - Parse license response time information as UTC time
    - [QLS-726] Set minimum license renewal time
    - [QLS-538] Create a waiting queue for floating clients
    - Enable release request
    - Add renewal mechanism
    - Limit maximum renewal time of reservation to once per day
    - Cloud back-end support
    - [QLS-268] Add QtAccount integration
    - Force HTTPS for login request
- On-demand launch support
    - Alternative for installing the daemon as a system service. The service will be kick-started
      by the client apps in the user-space
    - [QLS-576] Add command line option to start in on-demand mode
    - [QLS-586] Search for first free TCP port to listen at
    - [QLS-573] [QLS-574] [QLS-578] Add support for on-demand startup of license service
    - [QLS-574] Make on-demand service shutdown timeout configurable
    - [QLS-632] Register service installation to installations.ini
    - [QLS-695] Remove qtlicd.port in case of invalid port information
- License Cache
    - Cache licenses in a local cache. Supports usage without network connection.
    - [QLS-518] Introduce LicenseCache and LocalLicense types for caching unified licenses to disk
    - [QLS-591] Verify license signature
    - Store retrieved licenses to cache
    - Prepare to use reservation information from license cache
    - [QLS-628] Import local license files from $HOME root
    - [QLS-425] Create "local reservation" for imported licenses
- Client API
    - [QLS-385] Add integration point library for client tools
    - [QLS-647] Add license renew and release notify mechanism for LicenseClient
- Bug fixes
    - [QLS-440] Fix a bug when client dies before server response
    - Fix potential nullptr reference
    - Fix missing reservations query command
    - [QLS-472] Recover from temporary server outage
    - TcpClient: do not close socket after successfully receiving data
    - [QLS-537] Allow permanent reservation for site license only
    - Retry failed license release requests when server is busy
    - Fix Windows service start/stop problem
    - Fix releasing expired reservations on service startup
    - Licenser: attempt re-reservation for connected clients on renew failure
    - Fix file logger initialization
    - [QLS-667] Do not ping the server if server_url is not defined
    - ClientHandler: fix potential skipping of valid existing reservations
    - [QLS-607] Windows: Unicode handling fixes
    - Fix Service hangup in case of empty incoming request
    - [QLS-725] Fix several possible causes for segmentation faults
    - [QLS-743] Linux: fix invalid working directory when running as system service
    - [QLS-755] Fix mocwrapper argument forwarding
    - [QLS-781] Create lock file directory path
    - [QLS-783] Windows: fix CRT conflicts
- Other
    - Add support for setting the logging level from env variable
    - build_windows.bat: support passing CMake generator as argument to script
    - [QLS-711] Use server response codes instead on relying on string messages
    - Allow conditional building of subprojects
    - Generate UUID on macOS using the foundation libraries
    - [QLS-776] Windows: update libcurl to 8.6.0 version
    - Include HTTP status codes in logs

####################

Changes in 2.1.0
- Remove warning about empty email setting value from legacy coco
- Add git sha and build date to version information
- Clean up log prints
    * Changed some info prints to debug ones, in order to reduce log prints in daemon's default operating mode
- Minor documentation updates
- Add support for setting the logging level from env variable
- Do not strip '@' from incoming messages
- [QLS-543] Add support for overriding single user settings from environment variables

####################

Changes in 2.1.0-rc1
- [QLS-422] Daemon now fetches info for all the available license numbers and their types by sending ping message to the server.
    * Note: Server 2.2 or above required to reply a ping with license info.
    * Daemon now relies entirely on server to get info about licenses and their models.
    * As a backup, daemon stores the newest fetched license info in the file. If no server connection, and no info from the cached license info file, daemon fails to start.
- [QLS-440] Additional class created to handle the leftover reservations
    * Each time floating license is reserved, daemon stores the reservation ID in the file. When client disconnects, the reservation ID is removed.
    * If something bad happens e.g. daemon crashes, being not able to release the reservations from server, current reservations still stay in the file. Upon daemon restart, the cache file is being read, making it possible to release all those "ghosted" reservations from the server. With empty cache, daemon then starts listening for client apps.
- [QLS-360] [QLS-366] Refactored the client classes to reflect license models rather than client app name
    * Better maintainability and scalability
- [QLS-385] Add integration point library for client tools
    * Migrate qtlicensetool and mocwrapper to use the client library
- Remove deprecated support for server address override in the user configuration file
- Fix a bug when client dies before server response
    * Release the reservation normally from the server
- [QLS-472] Recover from temporary server outage
    * Release all clients that disconnected during a server outage, once the server is up again
- [QLS-538] Create a waiting queue for floating clients
    * If the license seats are all used in the server, the floating clients are put in a queue to wait some seats to be freed
- Retry failed license release requests when server is busy
    * In case the server returns with a message indicating busy status, attempt the request again after a small delay
- Email not needed with Coco drop-in usage
- Update and restructure documentation

####################

Changes in 2.1.0-beta3:
- Add a feature to release all pending (leftover) floating reservations upon daemon restart
- Add process_id field to the server requests, to separate identical requests from each other
        * Fixes an issue with new server versions which require the process_id

####################

Changes in 2.1.0-beta2:
- Fix daemon work directory for Windows
- Fix unnecessary server requests for clients without valid reservation
- Windows: fix allowing binding listening socket to used address
- Add new logging functionality
        * More detailed output and support logging into file
- Remove UUID part from the user_id value in license requests (legacy coco)

####################

Changes in 2.1.0-beta1:
- Prepare for floating license support
- Daemon name 'licd' changed to 'qtlicd'
- Daemon architecture changed towards more modular approach
- Fixed a bug with SSL support
- Added HW ID calculation if empty (hw_id now empty by default in qtlicd.ini)
- Removed possibility to override license server address from CLI
- Concept of "long-term" renamed to "permanent"
        '-L' switch of qtlicensetool changed to '-p' to reflect the change
- Fixed cloud server support
- Add qlicenseservice static library for common code
- Improvement in TCP/IP server for handling client sockets
- Run Licenser instance in its own thread
- Add preliminary auto-test suite
- Fix segmentation fault after receiving SIGINT signal
- Fix issues caused by invoking exit() on non-main thread
- Fix of a bug where daemon grants non-valid license
- Enable CI for the repository
- Fixes to Windows build script
- Asynchronous TcpServer and HttpClient
- Support drop-in replacement for Coco license server
        Daemon now listens additional non-changeable port 49344 which is dedicated to coco only

####################

Changes in 2.0.4:
- Changed daemon response message in case there is no licenses left in the pool

####################

Changes in 2.0.3:
- Mocwrapper made even less verbose

####################

Changes in 2.0.2:
- Added this changelog
- Implemented support for additional leeway time in case there's no server connection

####################

Changes in 2.0.1:
- Added a new feature to the qtlicensetool: Get current reservation status
- Mocwrapper is now less verbose

####################

Changes from 0.xxx to 2.0.0
- 'qtlongterm' CLI tool replaced with a new, more generic 'qtlicensetool'
- Long-term functionality added in the qtlicensetool through -L (or --longterm) switch
- The qtlicensetool always uses [default] section in the user settings file to get its settings from
    * Swithces used in qtlongterm command are now mostly optional, to be able to override the [default] ones
    * See 'qtlicensetool --help' or README.md
- Version queries now possible with the qtlicensetool
    * Version queries from the License Service (daemon), the License Server and the tool itself
- The binaries (licd, mocwrapper, qtlicensetool) now accepts --version (or -v) switch
- Several under-the-hood improvements for maintainability and robustness