1Changes
2=======
3v3.1.37.1
4- Support REQUEST_ACK message type (PR #237)
5- Fix typo in error message (PR #238)
6- Fix for bug #239, as one process use two stubs for different vlans (PR #247, Issues #223 #239 #241)
7- Fix multicast timeout crash on Windows caused by bad use of reinterpret_cast (PR #272)
8- Update configuration paths to reside on vendor partition (PR #274)
9- Retry failed netlink operations (PR #283)
10- Fixed android build error (PR #288)
11- Fix for configuration option deserialize bug (PR #300, Issue #263)
12- Accept return codes within range 0x20-0x5E as valid (PR #312)
13- Add support for broadcast (PR #314)
14- Fix for TC8 test case SOMEIPSRV_RPC_07 and SOMEIPSRV_SD_BEHAVIOR_03 (PR #316, Issue #315)
15- Support boost 1.76 (PR #318)
16- Fix big endian support in byteorder.hpp (PR #320)
17- Use Reference to Prevent Copying (PR #356)
18- Add CI using github actions (PR #140)
19
20v3.1.37
21- Added dependency from network tests to e2e library (plugin).
22- Avoid services becoming available when the daemon is suspended
23- Handling with some udp errors in send_cbk process,
24    restarting the connection.
25
26v3.1.36
27- Fix for ELVIS-339712: Fix handling of subscription objects
28   during unsubscribe.
29
30v3.1.35
31- Reworked fix for ELVIS-3310053
32- Improve checking for matching responses.
33    - When sending a response, vSomeIP only checked for a request with
34      the corresponding combination of client and session identifiers.
35    - This led to the possibility, that a response was sent for the
36      wrong service and/or method because of matching client and session
37      identifiers.
38    - This commit implements a full check of service, method, client and
39      session identifiers to ensure a response fits to the received
40      request.
41- Rework to get rid of clang-tidy (llvm14) warnings.
42- Facilitate manual execution of (some) subscription tests.
43    - Switch log level from "debug" to "warning" to facilitate the selection
44      of the script name that must be executed on client side.
45- Do not send initial events for rejected subscriptions.
46
47v3.1.34
48- Use default ports if an acceptance configuration does not specify any.
49- Prevent StopSubscribe/Subscribe on first offer reception.
50- Ignore routing state settings to the current state.
51- Explicitely clean subscriptions if a service removal is reported.
52- Use SOL_RECBUFFORCE instead of SOL_RECVBUF.
53
54v3.1.33
55- Corrected flag initialization to avoid wait time when re-establishing
56  connections.
57
58v3.1.32
59- Fix bug which could lead to deleting requested services of routing
60  manager.
61- Add Jenkins pipeline.
62- Fix race condition which could lead to false positive security
63  warnings.
64- Fix handling of remote subscriptions for unoffered services: Fix bug
65  which could lead to erroneously not accepting remote subscriptions
66  after a service was stop being offered and offered again.
67
68v3.1.31
69- Fix race condition which could lead to not establishing a TCP
70  connection to a remote service
71
72v3.1.30
73- Fixed lock order inversion
74- Fixed UDP socket bind error handling
75
76v3.1.29
77- Do not send re-subscriptions on suspend
78
79v3.1.28
80- Fixed race condition in client endpoint send queue
81- Improved robustness when receiving malformed remote subscriptions
82- Cleanup remote subscribers on suspend
83
84v3.1.27
85- Performance improvement: Added service partitioning:
86  Each configured partition will lead to a separate client port being used
87  to connect to a remote server port
88- Improve handling of expired subscriptions
89- Fixed race condition when starting "last message received" - timer.
90
91v3.1.26
92- Improve handling of expired subscriptions
93
94v3.1.25
95- Fix event payload caching at proxy
96
97v3.1.24
98- Fix for initial events
99
100v3.1.23
101- Fixed crash in TCP client endpoint
102- Fixed TCP socket bind error handling
103
104v3.1.22
105- Fixed joining multicast group for udp server endpoints
106
107v3.1.21
108- Fixed missing DLT logs if DLT was enabled in config in parallel with file or console logging.
109- Avoid heap-buffer-overflow in look_ahead() when deserializing SD entry / option type.
110- Restart UDP client endpoint on connection refused error.
111- Select a free client port that was not used recently.
112- Limit the number of possible remote subscribers from same remote IP address
113  to an eventgroup provided by a service/instance if the remote
114  subscriber uses different ports for its subscriptions.
115
116v3.1.20.3
117- Correct detection payload changes (Issue #164)
118
119v3.1.20.2
120- Removed special way of detecting boost within NDK (PR #187)
121- Allow events/eventgroups to be specified in arbitrary order (Issue #68)
122- Allow port 65536 to be used (Issue #80)
123- Support IPv6 (Issue #162, PR #179)
124- Fix handling of local service history (Issue #163)
125- Fix referencing of placeholder events (Issue #175)
126- Corrected handling of debounced requests when releasing (Issue #181)
127- Fixed possible race when disconnecting (Issue #182)
128- Align order of acknowledgement and value sending (Issue #183)
129
130v3.1.20.1
131- CMakeLists.txt fixes
132  (by Martin Haase)
133- Mark all services unavailable when the routing manager goes down
134  (by Philip Werner & dannyrhubarb)
135
136v3.1.20
137- SomeIP/TP optimization
138- Fix for expired subscriptions
139
140v3.1.19
141- Log statistics for high frequent received remote events
142- Avoid unintended deletion of all service instances in release_service()
143- Prevent deletion of server endpoint on SubscribeEventGroupACK with multicast endpoint
144- Do not lock the multicast mutex twice
145
146v3.1.18
147- Support boost 1.74
148- Ignore remote offers without referenced endpoint options
149- Fixed race condition when removing security policies
150- Ensure composite send operations have finished before resetting TCP server endpoint
151
152v3.1.17
153- Support AutoSAR E2E Profile 4
154- Support dynamic policies for offered services
155- Fixed race condition between service shutdown and subscription
156- Fixed race condition between service instances offered on the
157  same endpoint(s).
158
159v3.1.16.1
160- Restore IPv6 within UDP server endpoint
161- AOSP build adaptation to vsomeip3 libraries
162
163v3.1.16
164- Fixed race condition when leaving multicast group
165- Do not busy loop when receiving garbage data on local endpoint
166
167v3.1.15
168- Ensure to remove the correct subscription object on unsubscribe
169- Implemented support to define "secure services"
170- Speedup security policy handling
171- Enable building with boost v1.73.0
172
173v3.1.14.1
174- Merged extended support for static routing (versioning)
175  (by Jean-Patrice Laude [email protected])
176- Merged simplification of build process for hello_world example
177  (by Nikolay Khilyuk [email protected])
178- Updated Android.bp to use boost 1.70 or higher
179- Merged Android support for hello_world example
180  (by Nikolay Khilyuk [email protected])
181- Align response sample to documentation (do not specify application name)
182  (by JayHou [email protected])
183- Call dlerror before calling dlsym to clear previous error
184  (by Oleg Kharitonov [email protected])
185- Get base path from environment variable for Android NDK
186  (by Nikolay Khilyuk [email protected])
187- Fixed wrong library naming
188  (by Nikolay Khilyuk [email protected])
189
190v3.1.14
191- Fixed race conditions (application registration, subscription)
192
193v3.1.13
194- Abort operation when doing a full rejoin
195- Protect access when consuming a policy
196- Decrease wait time for composite send operations
197- Reimplemented logger without using boost::log
198
199v3.1.12
200- Ensure composite send operations have finished before resetting an endpoint.
201  Otherwise this may cause a crash within boost.asio.
202- Always use the assigned client identifier when sending messages from a proxy.
203- Add TTL to initial timestamp to avoid immediate expiration.
204
205v3.1.11
206- Preparation for new IPsec plugin (3.1.1)
207
208v3.1.10
209- Reset subscriptions on stop offer service
210- Protect access to security policy contents
211- Tolerate wrong/incomplete event registrations in compatibility mode
212- Avoid buffering of pending subscriptions
213
214v3.1.9
215- Fix race condition when processing multicast messages
216
217v3.1.8
218- Fix deadlock when sending messages
219- Fix race condition when processing SD messages
220
221v3.1.7
222- Fix stop subscribes when a service is released
223- Improve handling of time stamps when processing subscriptions
224- Log queued data instead of socket fill levels
225- Ensure all shutdown steps are executed (even in case of exceptions)
226
227v3.1.6
228- Fix possible busy loop when expiring subscriptions
229- Use set of serializers to avoid deadlock situation
230- Improve client identifier handling
231    - Check whether corresponding socket is available
232    - Implement retry if a client identifier cannot be used
233- Log buffer fill levels if they exceed a configurable threshold (default=67%).
234
235v3.1.5
236- Ensure subscriptions to remote services are correctly reset when
237  services are no longer available.
238- Fix race condition when inserting new subscriptions.
239- Fix accessing of security module during library shutdown.
240
241v3.1.4
242- Ensure to only mark remote services offered via UDP and TCP as
243  available when both endpoints are marked as connected to prevent TCP
244  connection restarting by the service discovery.
245- Fix possible deadlock when expiring a remote subscription and
246  sending the corresponding event at the same time.
247- Fix nullptr access in service discovery when receiving a
248  subscription for an unknown eventgroup.
249- Add new cmake variables DEFAULT_CONFIGURATION_FOLDER and
250  DEFAULT_CONFIGURATION_FILE which can be used to change the default
251  configuration folder and file at compile time (see vsomeipUserGuide
252  for more information)
253- Fix race condition leading to not accepting service offers from
254  a local client when the same service was offered and stop offered in
255  a high frequency
256
257v3.1.3
258- Set client ID to 0x0 for SOME/IP SD messages
259
260v3.1.2
261- Fix bug in vSomeIP 2 compatibility layer which lead to offering
262  selective events as normal events in conjunction with
263  CommonAPI-SomeIP mainloop integration when a proxy was build to a
264  stub through the same CommonAPI connection ID in the same binary.
265
266v3.1.1
267- Ensure sending StopOffers for services specified with a different
268  protocol than someip in the configuration.
269- Add support for boost v1.70 and v1.71.
270
271v3.1.0
272- Integrate changes of 2.14.12 - 2.14.18
273- Add get_uid and get_gid methods to message class
274- Add reliability parameter to application::offer_event and
275  application::request_event methods
276- Add vSomeIP 2 compatibility layer.
277- Fix crash when expiring a reliable-only subscription
278- Fix Android compile errors
279- Fix bug in service discovery offer acceptance handling which led to
280  only checking the first service entry of an incoming SD message via
281  the registered handler.
282- Deactivate adherence to NPDU debounce time between SOME/IP-TP
283  segments of the same message.
284- Fix less than operator of remote_info_t which lead to
285  application::get_sd_acceptance_required() always returning a map
286  with only one erroneous element
287- Fix SD startup on Windows
288- Fix heap-use-after-free in server endpoints
289
290v3.0.0
291- Cleanup of application interface
292    - Removed (un)register_subscription_error_handler methods. The
293      functionality is now offered through the
294      (un)register_subscription_status_handler methods.
295    - All methods concerning events/fields now use a new event_type_e
296      enum to specify the event type.
297    - The subscription_type_e parameter was removed from the subscribe
298      method. The way the remote service is offered now determines the
299      subscription type.
300    - The offer_acceptance* methods were renamed to sd_acceptance*.
301    - The flush parameter was removed from the send method
302    - Removed notify and notify_one methods which used the flush
303      parameter.
304- Added SOME/IP-TP functionality. Please see the vsomeipUserGuide for
305  more information.
306- Added nPDU functionality. Please see the vsomeipUserGuide for more
307  information
308- E2E protection is now implemented as plugin
309- Added Android support
310- Internal improvements and bugfixes
311
312v2.14.18
313- Fix bug leading to not sending out FindService entries after a
314  resume from Suspend-to-RAM, if the service was already known at the
315  time of the request.
316
317v2.14.17
318- Performance improvements for request-service message handling
319
320v2.14.16
321- Ensure restarting of TCP connection if TCP reset is received
322  before 3 way handshake is finished
323
324v2.14.15
325- Ensure that all clients receive the security policy update
326
327v2.14.14
328- Improved handling for EMFILE error (per-process limit of open
329  filedescriptors reached)
330- Fixed client ID assignment
331
332v2.14.13
333- Fixed race condition leading to unintended sending
334  of selective broadcasts.
335
336v2.14.12
337- Make timeout during application shutdown configurable via
338  "shutdown_timeout" json configuration file parameter
339- Fix bug leading to too fast reassignment of client IDs acquired via
340  auto-configuration in conjunction with usage of a non-continuous
341  diagnosis mask
342
343v2.14.11
344- Fixed race condition when opening shared memory
345- Fixed race condition when inserting SubscribeEventGroupACK
346  entries
347- Added prefix for security related log messages
348
349v2.14.10
350- Fixed race condition in client ID to UID mapping.
351
352v2.14.9
353- Fixed race condition in event / response validation
354  and client ID to UID mapping removal
355- Limit reconnect attempts of local client endpoints
356- Increase robustness of local server endpoint
357  in case of corrupted data stream
358
359v2.14.8
360- Handle ANY_METHOD for security policy updates
361
362v2.14.7
363- Reverted security related feature if same client connects
364  again with different credentials.
365
366v2.14.6
367- Fixed issue related to client ID reuse if security is activated
368- Use chmod instead of umask to ensure correct permissions of unix
369  domain sockets
370
371v2.14.5
372- Fixed race condition when handling security policy updates
373
374v2.14.4
375- Added whitelist feature for security policy update / removal
376- Added / improved security related checks
377
378v2.14.3
379- Prevent concurrent access to any client policies
380- Updated ACL plugin interface
381
382v2.14.2
383- Fix possible deadlock when receiving invalid responses from remote
384  TCP services
385- Enabled loading of UID GID specific security configuration during
386  application startup
387
388v2.14.1
389- Check header fields in udp endpoints for correct values
390- Fixed race condition in event::notify methods
391- Ensure to always resume sending if endpoints were restarted
392- Prevent possible concurrent access to receive buffer in endpoints
393- Allow or deny all remote clients via security config parameter
394- Adapt security config plugin to updated ACL interface
395- Make receive buffer size configurable for UDP client and
396  server endpoints via "udp-receive-buffer-size" parameter
397  in json configuration file
398- Fix race condition which could lead to premature resubscription if a
399  remote service was stop offered and offered again
400
401v2.14.0
402- Introduce security policy updates during runtime and extend
403  security configuration to filter on instance ID and method ID level
404  For more information see the vsomeipUserGuide.
405- Make IPsec plugin more robust against libdavici communication loss
406
407v2.13.2
408- Make I/O thread nice level configurable
409
410v2.13.1
411- Improve check of subnet mask for remote subscribers
412- Restart TCP connections if too big messages are received
413- Don't process subscriptions if IPsec connection isn't established
414- Additionally check protocol header fields in tcp endpoints as well
415- Fix race when expiring remote services
416
417v2.13.0
418- Update debug_diagnosis_plugin and add update_service_configuration
419  method to public application interface. This enables offering of
420  service instances on the network which are only offered locally by
421  default. The changes done through the new method are not persistent
422  over reboots.
423- Fix handling of requests send to the service discovery port
424- Log time since routing state was set to RS_RESUMED in cyclic version
425  logger
426- Blame externally offered services if routing state is set to
427  RS_SUSPENDED
428- Prevent possible exception during application shutdown
429
430v2.12.4
431- Improve handling of reboot detection in IPsec plugin if the
432  same ipsec connection is still used after reboot.
433
434v2.12.3
435- Improve handling of broken TCP streams
436
437v2.12.2
438- Expire remote subscriptions to local services when routing state is set to
439  suspending
440
441v2.12.1
442- Fixed race condition in event registration
443
444v2.12.0
445- Improve error handling and STR behaviour of IPsec plugin.
446- Improve magic cookie handling.
447- Fix possible deadlock on application shutdown
448- Fix handling of local StopOffers when duplicate service instances
449  are present in the network.
450- Make trace connector json configuration more flexible
451- Fix bug in security configuration when black listing single
452  UIDs/GIDs
453
454v2.11.2
455- Ensure service availability if IPSec plugin is activated but IPsec
456  not configured correctly.
457
458v2.11.1
459- Improve handling of slow remote ECUs in IPsec plugin
460- Fix possible deadlock on application shutdown
461
462v2.11.0
463- Added IPsec plugin.
464  The compilation of the plugin has to be explicitly enabled when calling cmake.
465  Example: cmake -DPLUGIN_IPSEC_BUILD=1 ..
466
467v2.10.22
468- Handle EPERM error (Operation not permitted) in cei::send_cbk
469- Restart TCP endpoint if a maximum number of aborted restarts
470  (due to state == CONNECTING) is reached or if a maximum allowed time since
471  the connection attempt was started has elapsed
472- Fixed missing call of subscription status handlers
473  for external fields if a following subscription
474  was done triggered by a service being stopped/expired
475- Fixed crash in vsomeip security credential check
476- Added Debian hardening compiler flags (requires GCC >= 5.2)
477- Fixed compilation with GCC 8
478
479v2.10.21
480- Improve memory usage of routing manager.
481- Improve handling of incoming SD messages with uncommon entry
482  combinations.
483- Name all threads under Linux and log thread IDs during startup.
484- Optimize memory allocation for internal message handling.
485- Ensure an (extra) dispatch thread is running in case the main
486  dispatch thread is (still) blocked.
487- Fix race condition which could lead to missing initial events for
488  local subscriptions if the application hosting the service called
489  application::offer_event and additionally application::request_event
490  for the same event.
491- Fixed crash
492
493v2.10.20
494- Add security config (i.e. vsomeip_security.json) to mandatory config files
495- Enable local_routing_test_starter.sh to use externally defined configuration
496  files
497- Reject malformed subscriptions with SubscribeEventgroupNACK if multiple
498  endpoint options are referenced
499- Use CMake define or environment variable to find gtest
500- Quit vsomeipd when Service Discovery is configured but module cannot be loaded
501- Added error message when Configuration module cannot be loaded
502- Export payload_impl to enable compilation with newer GCC versions
503- Avoid printing the same warning twice. Ensure all error paths are identifiable
504- Fixed security checks for policies without configured client ID
505- Fixed crash on auto config load in case of EOWNERDEAD caused by previous crashed/exited application
506
507v2.10.19
508- Catch exceptions on shutdown (especially from boost::log)
509- Fixed handling of malformed packets in TCP client endpoint in conjunction
510  with magic cookies
511
512v2.10.18
513- Fix restarting of TCP connection on connection reset by the server
514  and mark services reachable through it as unavailable until
515  connection is established again.
516- Fix bug which prevented restarting of TCP connections if the peer
517  instantly send a RST after the connection had been established.
518- Fix bug which could cause missing initial events in conjunction with
519  service discovery messages containing new subscriptions and
520  resubscriptions.
521
522v2.10.17
523- Speedup initial subscriptions to unreliable remote services
524- Fix deadlock in conjunction with configured client ports
525- Fix bug leading to usage of client port outside of configured range
526
527v2.10.16
528- Added changes for diagnosis mode plugin (as in v2.10.14)
529- Only map shared memory for client IDs once per process
530
531v2.10.15
532- Reverted diagnosis mode plugin (as in v2.10.11)
533- Fix remote event caching
534
535v2.10.14
536- Added changes for diagnosis mode plugin.
537- Bugfix for pending subscriptions when same port is used
538  for TCP and UDP endpoint option.
539
540v2.10.13
541- Reverted diagnosis mode plugin
542
543v2.10.12
544- Fix exception handling for boost logger
545- Update diagnosis mode plugin
546
547v2.10.11
548- Fix client ID handling for remote selective subscriptions
549- Add handling for EDESTADDRREQ in endpoints
550
551v2.10.10
552- Fix concurrency issue leading to a crash
553
554v2.10.9
555- Improve handling of service discovery messages with entries
556  referencing too many options.
557- Prevent sending of duplicate remote subscriptions to local clients
558  if the local client processes incoming subscriptions too slow.
559- Remote (un)subscriptions to the same eventgroup are now queued in
560  the routing manager until the local client has processed the
561  previous (un)subscription for this eventgroup.
562- Introduce new json configuration parameter 'diagnosis_mask' to
563  control the number of bits in the client ID used for the diagnosis
564  address. This can be used to enable more than 254 concurrent clients
565  on a node. For more information see the vsomeipUserGuide.
566- If the service discovery is enabled it is is only started if a
567  matching multicast route for the configured service discovery
568  multicast group is present in the system. This applies only to
569  Linux.
570- Rework security configuration:
571    - Allow policy specifications without client specification.
572    - Allow policies to be specified for ranges of uids/gids.
573  For more information see the vsomeipUserGuide.
574
575v2.10.8
576- Change dispatching of availability states in case an availability
577  handler of a service instance is blocked in user code: Availability
578  states of a service instance are now never dispatched parallel. The
579  next availability state for a service instance is only dispatched
580  after the blocked availability handler returned from user code. If
581  the availability of the service instance changes in the meantime,
582  subsequent incoming messages of the service instance are queued
583  until the availability change was reported to the user code.
584- Subscriptions to remotely offered services are now always done based
585  on the protocol(s) the remote service is offered with. The
586  subscription_type parameter of the application::subscribe method is
587  ignored.
588- Added wildcard support ("any") for the uid and gid json parameters
589  in the security configuration.
590- Fix possible deadlock on application shutdown
591
592v2.10.7
593- Fix potential deadlock when expiring remote subscriptions
594- Rework restarting of tcp client endpoints to prevent heap corruption
595  under high load situations
596
597v2.10.6
598- Fix concurrency issue leading to a crash when asynchronous
599  subscription handlers were used.
600- Improved packing of subscriptions sent out as answer to incoming
601  offer service messages.
602
603v2.10.5
604- Fix possible deadlock on application shutdown
605- Try to reestablish TCP connection on resubscription if the remote
606  closed the connection
607- Introduce new configuration file parameters to control
608  interpretation of TTL field of incoming remote offers and
609  subscriptions:
610  - service-discovery > ttl_factor_offers (optional array of
611    service/instance/TTL factor tuples)
612  - service-discovery > ttl_factor_subscriptions (optional array of
613    service/instance/TTL factor tuples)
614- Added possibility to debounce external events/fields
615  based on time or change of data in the payload (maskable) via new
616  configuration file parameter:
617  - debounce (optional array)
618  For more information see the vsomeipUserGuide.
619- Added possibility to limit amount of memory used to cache outgoing
620  messages on IP port basis or globally via configuration file
621  parameter:
622  - endpoint-queue-limits (array): to limit on IP:Port (endpoint)
623    level
624  - endpoint-queue-limit-external: to generally limit all external
625    endpoints.
626  - endpoint-queue-limit-local: to limit queue sizes for local
627    communication
628  For more information see the vsomeipUserGuide.
629
630
631v2.10.4
632- Extended diagnosis plugin to handle requests for
633  "disableRxAndEnableTx" and "disableRxAndTx".
634- Catch unhandled user code exceptions thrown from called handlers.
635- Don't send SubscribeEventGroupNACK for pending subscriptions on next
636  offer to reduce the amount of StopSubscribe/Subscribe messages.
637- Added possibility to apply filter for client side logging
638  using VSOMEIP_CLIENTSIDELOGGING environment variable.
639
640v2.10.3
641- Interpret all incoming TTLs five times longer in service discovery
642  to prevent inadvertent expiration of remote offers during high load
643  situations.
644
645v2.10.2
646- Fix deadlock in routing manager when processing subscription
647  acknowledgment from a local client if the corresponding service
648  instance was stopped in the meanwhile.
649- Introduce status_log_interval and memory_log_interval json file
650  parameters which can be used to cyclically log memory consumption
651  and/or internal status of the routing manager in a given interval
652- Add Debug Diagnosis Job plug-in
653- Support definition of multiple client port ranges in configuration
654
655v2.10.1
656- Fix possible memory corruption in routing manager on TCP connection
657  reset
658
659v2.10.0
660- Add register_async_subscription_handler to application interface
661- Ensure faster stopping of UDP and TCP endpoints
662- StopSubscribe eventgroup entries of StopSubscribe/Subscribe
663  eventgroup entry sequences in incoming SD messages are now
664  completely handled in the service discovery module
665
666v2.9.5
667- Change magic cookie behaviour to only send a magic cookie every 10
668  seconds instead of in front of every SOME/IP message
669- Fixed bug which prevented resubscription after resuming from
670  suspended state
671
672v2.9.4
673- Fixed deadlock on suspend to RAM / resume, triggered
674  by signal handler.
675
676v2.9.3
677- Fixed race condition on application shutdown
678- Fixed bug that application object was not destroyed
679- Enabled client side logging of received messages
680  to DLT if environment variable VSOMEIP_CLIENTSIDELOGGING
681  is set to empty string or another arbitrary value.
682- Ensure that the correct source port is used for sending events
683
684v2.9.2
685- fix handling of received response messages for unknown
686  clients.
687- Ensure that all external services are marked as offline when
688  routing_state is set to RS_SUSPENDED
689- Ensure to start sending out FindService messages for requested
690  services after resuming.
691- Ensure that the service info is also deleted if no unreliable
692  communication happened before the service TTL has expired.
693
694v2.9.1
695- Don't ignore service requests for UDP-only remote services done
696  before corresponding OfferService message was received.
697- Ensure that main dispatcher thread waits until newly started
698  dispatcher threads are finished with their call into the user code
699  before starting to dispatch again after a blocking call occurred.
700
701v2.9.0
702- Added get_offered_services_async method to application interface to
703  read the currently offered services
704- Added set_watchdog_handler method to application interface which can
705  be used to register a handler invoked in a given interval.
706- Optimize processing time of incoming service discovery messages
707- Events are now sent based on their configuration in the json file
708- If a remote service is offered reliable and unreliable subscriptions
709  are now done always with both endpoint options.
710- Incoming subscriptions are now not acknowledged if not all events of
711  the eventgroup can be served with the given endpoint options.
712
713v2.8.1
714- Support negative filter in trace connector
715
716v2.8.0
717- Change behaviour of register_subscription_status_handler method of
718  the application interface: Registered handlers will only be called
719  if the subscription was accepted by the remote side.
720- Add 2nd register_subscription_status_handler method to application
721  interface with additional flag to enable calling of the registered
722  handler if the subscription is rejected by the remote side.
723
724v.2.7.3
725- Fix deadlock when stopping client endpoints to remote services
726- Fix deadlock during construction of Subscribe Eventgroup entries
727
728v.2.7.2
729- Avoid deadlock when printing error message about too large messages
730
731v2.7.1
732- Prevent processing of too short messages received via UDP
733- Avoid catching SIGABRT in vsomeipd
734- Prevent duplicate logging of remote messages
735- Log message cleanup/enhancement
736
737v2.7.0
738- Add possibility to register a subscription status handler via
739  application interface. The handler will be called if a subscription
740  is acknowledged / not acknowledged by the application hosting the
741  target service instance of the subscription
742- The default subscription type of application::subscribe method was
743  changed from RELIABLE_AND_UNRELIABLE to PREFER_RELIABLE to harmonize
744  initial event behaviour
745- Add generic plug-in concept
746- Fix bug which caused sending out subscription messages containing
747  endpoint options with port set to zero
748- Make magic cookie detection TCP connection based
749- Avoid sending unneeded SIGKILLs to current routing manager
750- Forward service's instance IDs to DLT
751- Fixed performance loss on "client ID" lookup needed for ingoing
752  remote subscriptions
753- Add signal handling for starting stopping the service discovery to
754  vsomeipd
755- The message object can now be asked for CRC check state:
756  is_valid_crc()
757- Incoming remote responses where the CRC check fails will trigger:
758  set_is_valid_crc(false)
759
760v2.6.4
761- Fix bug in reboot detection of other nodes
762- Improve restarting of TCP connections
763
764v2.6.3
765- Improve reboot detection of other nodes
766- Introduce 'max-payload-size-reliable' json file parameter which can be used to
767  globally limit the maximum allowed payload size for TCP communication
768- Added CRC checksum calculation for bit optimized messages
769
770v2.6.2
771- Service-Disovery performance improvements
772- Made Routing Manager restartable
773- Fixed file handle leak caused by remote ECU reboot
774- Activate TCP-Keep-Alive for TCP endpoints
775- Debouncing of request-service messages (routing info performance)
776- Fixed false session-id handling of identification request
777
778v2.6.1
779- Fixed clearing of subscribers on stop offer service
780
781v2.6.0
782- Fixed races and crashes
783- Fixed repetition phase timings for find service messages
784- Reworked internal event/field distribution to reduce CPU load
785- Reworked internal routing info distribution leading to fewer and smaller
786  messages and lower CPU load
787- Extend public application interface with second unsubscribe method with
788  additional event parameter
789
790v2.5.3
791- Fixed races and crashes
792- The minor version of a service instance is considered again when reporting the
793  service instance's availability (this was removed with v2.4.2). If the minor
794  version should not be considered use ANY_MINOR or DEFAULT_MINOR when
795  registering availability handlers.
796- Fixed initial events on unsubscription
797- Improved dispatcher handling for blocking calls
798- Crashed applications are now automatically unsubscribed
799
800v2.5.2
801- Fixed deadlock and crashes
802- Prevent race of initial attributes
803- Allow incomplete application configurations
804- Unit test timeouts increased to avoid failures on (slow) build servers
805
806v2.5.1
807- Removed payload size limit. By default messages with an arbitrary length can
808  now be sent locally and via TCP. The payload-sizes configuration file array is
809  now used to limit the payload size for the specified endpoints instead of
810  increasing it. There are two new configuration file parameters:
811  - max-payload-size-local: limit maximum allowed payload size for node internal
812    communication.
813  - buffer-shrink-threshold: variable to control buffer memory deallocation
814    after big messages have been processed. For more information see the
815    vsomeipUserGuide.
816- Fixed cleanup of endpoints for subscriptions using an exclusive proxy
817  (selective) which unnecessarily increased the number of open file descriptors.
818- Fixed assignment of predefined application IDs via autoconfiguration.
819- Decouple start of routing manager from network availability.
820- Made number of internal threads per application configurable.
821- Postpone notify_one events sent from subscription handler to ensure correct
822  message order on receiver side.
823
824v2.5.0
825- Added notify-/notify_one-methods to enable flush control for notifications.
826- Restructured configuration to be a separate module (preparation to enable
827  the usage of compiled configurations to speed-up startup)
828- Added vSomeIP-Security: Socket authentication based on Linux-credentials
829  together with further security checks using configurable policies.
830- Fixed pending subscriptions had not sent out if subscribing application
831  hosts the routing manager.
832- Fixed crash in vsomeipd due to concurrent access when closing/shutdown socket.
833- The service discovery now debounces newly offered service instances to avoid
834  sending out the offers of the same service instance with a too high frequency.
835  The default debounce time is set to 500ms. It can be changed via the new json
836  file parameter service-discovery/offer_debounce_time.
837
838v2.4.3
839- Fix receiving of UDP frames containing multiple SOME/IP messages via UDP from
840  external service instances
841
842v2.4.2
843- TCP connections for services no longer requested aren't reestablished anymore
844- The minor version of a service instance is no longer considered when reporting
845  the service instance's availability
846- Introduce new internal_services json file parameter to define the internal
847  service instances. This parameter can be used to control the sending behaviour
848  for find service entries
849- Fixed event processing if service and client shared the same application
850- Incoming find service entries with unicast flag set to 0 are now replied with
851  a unicast offer service message instead of a multicast offer service message.
852- application::stop() now blocks until the shutdown has finished completely
853
854v2.4.1
855- Extended number of endpoints that can be referenced from entries array in
856  service discovery messages
857- Remove DLT contexts on application shutdown
858- Avoid initialization of vsomeip-applications if the maximum number of
859  applications (client identifiers) has been reached
860- Prevent sending of OfferService entry as a reply to FindService message for
861  internal services
862- Fixed deregistration of vsomeip-applications that became unresponsive
863- Fixed loop in endpoints causing high load during shutdown of vsomeip
864  applications
865- Fixed loop in endpoints causing temporary high load if other devices become
866  unavailable without deregistering
867
868v2.4.0
869- Disabled tracing SOME/IP-SD messages by default. Set "tracing/sd_enable"
870  switch to "true" to enable it.
871- Trace notification events once instead of per target.
872
873v2.3.5
874- Fix TTL in Subscribe Eventgroup Entries
875
876v2.3.4
877- Exhaust client id range before reuse
878- Provide public interface to ask for available instances
879
880v2.3.3
881- Added -q/--quiet switch to the daemon to allow it to be started without
882  DLT logging
883- Fix event caching in routing manager
884
885v2.3.2
886- Fix client deregistration during the client registration
887- Fix handling of pending commands during registration
888
889v2.3.1
890- Fix shutdown crashes (logger & application shutdown)
891- Fix race condition in client identifier configuration
892- Fix vsomeipd crash
893- Fixed handling of notifications (compliance)
894
895v2.3.0
896- Extend the API to force field notifications
897- Implemented cyclic updated for events/fields
898- Implemented epsilon updates (the used can provide a function to decide
899  whether or not a value update shall be considered as a change)
900- Fixed lifecycle: Wait acknowledge of de/register application
901- Periodically log version information
902- Avoid (shadow) event registrations for services only offered locally
903- Fixed determination of routing manager host in case auto-configuration
904  fails
905- Removed initial flag from internal message format
906- Fixed calling of registered message handlers for cases where wildcards
907  were used during registration.
908- Fixed availability reporting of reliable (TCP) remote services offered
909  on the same port
910
911v2.2.4
912- Set default log level to DEBUG
913- Improved segmentation of service discovery messages
914- Fixed a race condition during subscriptions
915
916v2.2.3
917- Ensure service discovery messages to not exceed maximum packet size
918
919v2.2.2
920- Ensure multicast messages are sent by the network adapter that is configured
921  to be used for unicasts instead of relying on the configured routes
922
923v2.2.1
924- Backward compatibility fixes
925
926v2.2.0
927- Implemented Peer-to-Peer data exchange for notifications
928- Fixed handling of minor version during service discovery
929- Made initialization of application objects reentrant
930- Routing manager proxies now reconnect to the routing manager if the
931  connection got lost
932- Auto-configuration supports multiple (different) configuration files
933- The opening of TCP connections is no longer done without an explicit request
934- Request No Respose messages are no longer answered in case of errors
935- Notifications over IP were fixed
936
937v2.1.2
938- Ensure correct message order
939
940v2.1.1
941- Ensure SD FindService-messages are sent after client re-registration
942- Corrected configuration of MagicCookies
943- Make client ports configurable
944- Implemented FindService message optimization
945- Extended configuration consistency checks
946
947v2.1.0
948- Avoid duplicate notifications if a selective event is in more than one
949  eventgroup
950- Ensure SD messages are sent from the SD port
951- Ignore SD messages with wrong message identifier
952- Accept unreliable subscription for eventgroups without configured multicast
953  address
954- Reject subscriptions that contain invalid IP address or port
955- Reject subscriptions for TCP if the connection is not established
956- Exclude vsomeip_ctrl from default installation
957- Only accept SD messages from SD port
958- Acknowledge multiple subscriptions sent within the same message with a single
959  message
960- Allow to specify an application specific DLT application
961- Ensure correct ordering of availability notifications
962- Automatically expire subscription based on the given TTL
963- Do not include internal services in SD offer messages
964- Consider all fields of SD subscribe messages
965- Made the watchdog configurable
966- Support destination address resolution on Windows (for reboot detection)
967- Support auto-configuration (client identifiers, routing manager) on Windows
968
969v2.0.6
970- Diagnosis address can be configured at runtime
971
972v2.0.5
973- Fixed reboot detection behavior
974
975v2.0.4
976- Service Discovery now used configured Client ID prefixes (=DIAGNOSIS_ADDRESS)
977- Reworked reboot detection (now based on the destination address)
978- Aligned default TTL setting (was 5 in vsomeip and 0xFFFFFF in vsomeip-sd, now
979  its constently 0xFFFFFF)
980
981v2.0.3
982- Fixed shutdown and application re-registering
983
984v2.0.2
985- Fixed endpoint flushing
986- Improved handling of Selective Broadcasts (CommonAPI)
987- Trace connector was added
988- Added reboot detection
989- Reworked handling of TCP connections
990- Support multiple multicast eventgroups per service
991- Improved handling of multicasts
992- Extended Service Discovery to send FindMessage messages for unknown services
993- Support multiple SOME/IP messages in a single UDP datagram
994
995v2.0.1
996- Ensure Unicast flag is set in all Service Discovery messages
997- Allow "local" as alias for unicast address in Magic Cookie configuration
998- Correctly set layer 4 protocol in multicast options
999- Increased robustness of deserialization of configuration options
1000- Fixed handling of unknown Service Discovery options
1001
1002v2.0.0
1003- Buffer sizes were adapted to the transport protocols
1004- Added support for IPv6 multicast
1005- Improved handling of endpoints
1006- Report service state changes instead of service state to the application
1007- Set and process TTL field in Service Discovery to support detection of "lost"
1008  services
1009- Support automatic configuration of local communication
1010- Added compile time variable DIAGNOSIS_ADDRESS (which maps to the high byte of
1011  the SOME/IP client identifier)
1012- Configuration of events was moved from configuration file to API.
1013- Fixed routing of notication events.
1014- Increased robustness of configuration loader
1015- Changed default watchdog cycle from 1s to 5s
1016- Removed TTL arguments from public interface
1017- Allow Service Discovery to report non-SOME/IP services by setting the
1018  configuration variable "protocol"
1019- Fixed serialization of major version in Eventgroup entries
1020- Magic Cookies are no longer forwarded to the routing manager but handled in
1021  the receiving endpoint
1022- vsomeip daemon was added
1023
1024v1.3.0
1025- Fixed SD library loading on Windows
1026- Changed cmake directory name (CMake --> cmake)
1027- Corrected check for multicast address in Service Discovery
1028- Added default setting for Service Discovery timings
1029- Ensure only local services are reported by the Service Discovery
1030- Fixed a crash in case of a wrong unicast address definition
1031- Protected forwarding of availability information
1032- Improved handling of notification events
1033- Added initial support for selective broadcasts (CommonAPI)
1034- Avoid deadlock when offering services
1035- Correct handling of events
1036- Added initial support for managed interfaces (CommonAPI)
1037
1038v1.2.0
1039- Added (optional) thread pool for distribution of messages to the application
1040- Made configuration of service groups optional (as it is unneeded in pure
1041  client applications)
1042- Support specification of transportation mode (reliable (TCP) / unreliable
1043  (UDP)) when creating messages
1044- Fixed internal distribution of notication events
1045- Block messages that are received on the wrong port
1046- Fixed deregistration of local clients
1047- Fixed startup of applications that were started earlier than the routing
1048  manager
1049- Resetting all events of a service if it becomes unavailable (to ensure initial
1050  events are sent when it becomes available again)
1051- Ensure consistency of version information
1052- Fixed Service Discovery state machine
1053
1054v1.1.0
1055- Local communication in multiprocessor environments was fixed
1056- Runtime access was changed from raw to shared pointer
1057- vsomeip logger is used whereever possible (replacing std::cerr calls)
1058- Ensure the logger is not deleted before issueing tha last log message when
1059  shutting down
1060- Fixed shutdown crash by checking the existence of endpoint host before
1061  accessing it
1062- Routing info processing in case of multiple instances of the same service
1063  was fixed
1064- Support for local communication on Windows was added
1065