forked from philippe44/AirConnect
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
406 lines (296 loc) · 11.3 KB
/
CHANGELOG
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
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
0.2.51.2
- fix HTTP2 upgrade response to "Connection"
- audio/mp3 is not a correct mimetype...
0.2.51.1
- Fix CVE-2017-12087
0.2.51.0
- invoke stop callback on TEARDOWN first
0.2.50.5
- mdns fix for blank name field
0.2.50.4
- fix sslsym.c macros that were still incorrect
0.2.50.3
- noflush was not effective for aircast
0.2.50.2
- make sslsym compatible with openSSL 1.1.x
0.2.50.1
- noflush properly send silent frames at the right speed
0.2.50.0
- flush was broken since 0.2.27.0
- add --noflush options (and force :f in latencies if set)
- increment stream index at each SetURI/LOAD to make it unique
0.2.44.1
- (aircast) reset "Remove" flag when adding
0.2.44.0
- openssl 1.1.x compatibility
0.2.43.1
- address valgrind complaints
0.2.43.0
- don't remove unresponsive UPnP devices when playing
- don't remove CC devices that still respond to ping
0.2.42.1
- re-align airupnp & aircast version numbers
0.2.42.0
- a bit of cleaning wrt below issue
- use "binding" as general parameter name for upnp/cast
0.2.41.2
- %&@!* of Linux does not handle sscanf with %[^:]:%u when the first string is empty
0.2.41.1
- RTSP port was not bound to range!
0.2.41.0
- allow chunked encoding and fixed length
- DLNA.ORG_PN was missing for mp3
0.2.40.0
- add HTTP header callback for better DLNA handling
- answer to getcontentFeatures
0.2.30.0
- add port range
0.2.28.5
- tweak HTTP logs
0.2.28.4
- http_parse SDEBUG statement did not print received line
0.2.28.3
- remove stristr and clean strcasestr case called with NULL
0.2.28.2
- exclude NULL modelnumber when -o is specified unless they are explicitely autorized
0.2.28.1
- check that model & modelnumber are not NULL before looking of exclusion
0.2.28.0
- make max_players a parameter
0.2.27.1
- handle range request beyond count better
0.2.27.0
- (airupnp) add -u and UPnPMax config options to set the max upnp search
0.2.26.1
- (airupnp) config update shall not be done when there is not config
0.2.26.0
- (aircast) add -v <factor> to globally set group media volume
0.2.25.0
- (airupnp) search for mediarenderer:2
0.2.24.7
- garbadge left in airupnp.c
0.2.24.6
- Can't re-send more bytes than we've received
0.2.24.5
- (aircast) clear SSL context on shutdown
0.2.24.4
- race condition where the UPnP/CC device could be stopped by a flush after it started to play due to de-sync of flush/play (RTP) detetcion
0.2.24.3
- (airupnp) add remote_title
0.2.24.2
- restore trailing '+' UPnP name changes
0.2.24.1
- do not copy NULL strings ... (util.c)
0.2.24.0
- do not send body when method is HEAD
0.2.23.1
- A records expiration
0.2.23.0
- improve mDNS detection on multiple VLAN
0.2.22.1
- (upnp) -o option matches on exact model numbers only
0.2.22.0
- (upnp) add -o option to enable only listed model numbers
0.2.21.3
- remove un-necessary muted flag
- in Volume feedback, CalcGroupVolume was called before caller device was updated
0.2.21.2
- Can't use Sonos' group volume API as it takes time to "settle down", so need to create our own
0.2.21.1
- handle master's volume within all devices loop
0.2.21.0
- volume timestamp moved to UPnP/CC side instead of RAOP
0.2.20.0
- modify libupnp to search using unicast, but not device seems to support uPnP 1.1
- CheckAndLock waqs not locking device
- double timestamp to handle fast volume changes
- do not delete UPnP context when a Sonos player becomes a slave to manage volume for Sonos groups
0.2.13.1
- revert buffer indexing modifications
0.2.13.0
- follow original name change
0.2.12.2
- correct a key problem with circula buffer management and fill estimation
- integer promotion caused u16 comparisons to be wrong
0.2.12.1
- UDP sockets don't need shutdown
- destroy ab_mutex on thread termination
0.2.12.0
- static versions now include full static openssl
0.2.11.0
- revert previous change but force short int promotio in buf_fill calculation
- add protocolInfo as a parameter
0.2.10.3
- ancient 32 bits overflow bug in expected playtime calculation
0.2.10.2
- update built-in dll version to ones that do not need VS
- add x86_64 static version
0.2.10.1
- Windows 10 does has renamed libeay32.dll to libcrypto.dll and ssleay32.dll to libssl.dll (and does not even include it)
- do not crash when SSL not found
0.2.10.0
- openSSL loaded manually for compatibility => no need any more to deal with various openssl versions!
0.2.9.0
- (aircast) authorize "on behalf" announces as long as they are not from a group member
0.2.8.0
- silence frames count on http reconnect shall be 0 when already sending silence
- limit packet recovery to max of rtp latency and http delay
- misc network congestion corrections
- forced fill http moved to :f option on latencies
- add <drift> parameter
- STILL NEED TO KNOW WHY AIRCAST LOCKS ON EXIT
0.2.7.0
- add parameter to disable range acceptance in hairtunes (needed for shairtunes2)
- send silence frames as soon as playtime reached to ensure continuous HTTP stream
- reduce initial silence frames by number of already received frames
- discriminate FLUSH send at start to clean pipe from FLUSH used to stop playback using RECORD values and timer
- resend timeout was wrong (in http thread)
- silence frames count on http reconnect shall be 0 when already sending silence
- discard NTP sync that have a larger roundtrip (100ms)
- RTP latency can be negative to force filling of silence frame when buffer is empty but playtime has elapsed (continuous stream)
0.2.6.1
- (cast) simplify device removal (no explicit wakeup call)
0.2.6.0
- move RTSP server back to using accept() instead of select() and use connect() to close the connection
- remove usage of sleep() to redeuce CPU consumption in idle
0.2.5.0
- backport some squeeze2upnp/cast changes with no impact
- add -n option in airupnp to exclude model number
0.2.4.0
- Detect main IP address change and restart
0.2.3.1
- version mistake with 0.2.3.0
0.2.3.0
- add -c <codec> command line
- work with CC that require a range request (buffer up to 2MB)
- metadata was freed after ctx was released
- silence frame shall be ignored when range requested
- default codec for upnp was 'flac' instead of 'flc'
0.2.2.6
- set length for silent frame now that length must be returned
0.2.2.5
- aesiv and aeskey can start with a '\0', use a decrypt explicit boolean
- QueueFlush correction
0.2.2.4
- Group update could free NULL pointer (cast only)
0.2.2.3
- artwork was not a duplication, hence releasing metadata was failing (upnp only)
0.2.2.2
- update build toolchain to full cross compiling, including OSX, FreeBSD and Solaris
- added Linux ppc
- (cast) stop receiver should send STOP to sessionId, not mediaSessionId
0.2.2.1
- flac codec name is 'flc' not 'flac'
0.2.2.0
- add mp3 for encoding and icy metadata
- use Sonos radio stream url for mp3
- add option to set flac compression level
- encoder was not mutex protected against flush
0.2.1.1
- Some controlers like AirParrot do not send encrypted audio
0.2.1.0
- add static <artwork> parameter
- 32 bits comparaison correction
- (aircast) do not set playing state on "buffering" event
0.2.0.8
- add aarch64
0.2.0.7
- loglimit was not used in airupnp
0.2.0.6
- kd_dump was writing in a NULL string when no header was received
0.2.0.5
- alac.c compiles depends on endianness
- Some players (Roon) send a FLUSH after a TEARDOWN which caused access to a NULL hairtunes context
- When changing track, the previous HTTP socket was used to send new track, causing miss of flac header & track beginning yielding to very long CC start
0.2.0.4
- (airupnp) backporting of squeeze2upnp modifications
- Add TCP_NODELAY to HTTP socket
0.2.0.3
- race condition & double free when stopping device (credit @codepeon)
- http parsing error caused memory leak (headers not released)
- cosmetic changes
- (airupnp) backport squeeze2upnp modification (AVTSetURI)
- (airupnp) subscription complete failure could lead to access NULL pointer
0.2.0.2
- On keep-alive UPnP result, always move to next item if device found in list (even if removed as a Sonos slave)
- only use SEARCH_RESULT and not ADVERTISEMENT_ALIVE for keep-alive
0.2.0.1
- (airupnp) search for master should return true in case of UPnP error
- (aircast) mDNS search for groups was messed-up
0.2.0.0
- new handling of discovery (mDNS-SD and UPnP) for on-the-fly player addition / removal (no more discovery time and removal counts)
- Review of all mutex-related issue and various risk of unprotected code
- review of memory leaks (only the SSL remains, which is the same all over execution)
- mDNS records is now 120s (per RFQ) and not 75m so that in case of crash, player do not appear sticky for some applications
- add possibility to dump players ('dump' & 'dumpall' commmands)
- in SETUP response, cport and tport are set to 0 by default which will cause session to fail if none of these are provided
- handle "header folding" in HTTP response
- HTTP headers w/o : should not crash kbd_free
- use closesocket under Windows, not close!
- (aircast) SSL context is not deleted at every disconnect to avoid memory leaks
- (aircast) wrong volume local change when mute was set
0.1.6.1
- add Solaris i86pc build
- change some mdns options
0.1.5.3
- compile flag to store streams
0.1.5.2
- FreeBSD does not exit accept() even when socket shutdown properly, need to use select()
0.1.5.1
- memory leak correction in isMatsre & GetGroupVolume (@codepeon)
0.1.5.0
- add "+" after default name to identify AirConnect players
0.1.4.4
- always remove players on BYEBYE message
0.1.4.3
- (airupnp) default name is zone name for Sonos device
0.1.4.2
- (airupnp) properly eliminate Sonos slaves
0.1.4.1
- misc Sonos group cleaning
0.1.4.0
- (airupnp) detect Sonos groups and do not add slaves
- (airupnp) add Sonos groups volume
0.1.3.2
- discovery and exit (-i) could abort without searching on aircast
- new devices were not added to existing file when using -I
0.1.3.1
- when cannot start, exit with no-zero code
0.1.3.0
- title changed to "Streaming from AirConnect"
- code cleaning
0.1.2.0
- send minimum metadata
- (aircast) remove unused config items
0.1.1.0
- support wav and pcm codecs
0.1.0.5
- rare race condition in UPnP search timeout/result
0.1.0.4
- flac_ready boolean was un-necessary
- wait for playing (RTP) before sending silent frames
- was sending a few raw frames at the beginning when using flac
- functions renaming for better consistency
0.1.0.3
- pthread_join of remote search could be called twice
- update renderer thread cleaned for better exit
- memory leaks correction
0.1.0.2
- code cleaning
- exclusion (-m) parsing was wrong and ";" is not a valid separator
0.1.0.0
- HTTP delay uses silence frames
0.0.2.7
- do not hold RTP frames when they are available! only hold missing one, up to RTP latency
- add HTTP delay for Chromecast as well
0.0.2.6
- NULL (empty xml item) was causing crash and default save set <latency> to empty
0.0.2.5
- <name> in config file was not taken into account
0.0.2.4
- only notify of playback when frame is not silence (all 0) to avoid iOS 10.x spurious play
- add wav header so that wav can be used in AirCast as well
0.0.2.3
- increase SO_SNDBUF to try to better handle sloppy networks
0.0.2.2
- high CPU usage in http frames handling