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
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
|
15 July 2016 - 1.10.0
=======================
- Supports newest Qt5, drops support for Qt4.
- Source code cleanups, spelling error fixes.
- Handle digest authentication scheme case insensitively.
- Address book UI fixes.
- Fix build with ucommon 7.0.
- Call history UI fixes.
- Support using an external GSM library.
- Various other bug fixes.
10 July 2015 - 1.9.0
=======================
- Ported to Qt4 and Qt5.
- Added in-call OSD.
- Added a new incoming call notification screen/dialog.
- Support the G.729A codec.
- Made Diamondcard support optional.
- Save window geometry and state.
- Visual feedback (button presses) in DTMF window when pushing keyboard buttons.
- Support clipboard paste in DTMF window.
- Removed Boost Regex dependency.
- Eliminated some GUI freezes/stalls.
25 february 2009 - 1.4.2
========================
- Integration with Diamondcard Worldwide Communication Service
(worldwide calls to regular and cell phones and SMS).
- Show number of calls and total call duration in call history.
- Show message size while typing an instant message.
- Show "referred by" party for an incoming transferred call in systray popup.
- Option to allow call transfer while consultation call is still in progress.
- Improved lock file checking. No more stale lock files.
Bug fixes:
----------
- Opening an IM attachment did not work anymore.
Build fixes:
------------
- Link with ncurses library
31 january 2009 - 1.4.1
=======================
Bug fixes:
----------
- No sound when Twinkle is compiled without speex support.
Build fixes:
------------
- Compiling without KDE sometimes failed (cannot find -lqt-mt).
- Configure script did not correctly check for the readline-devel package.
25 january 2009 - 1.4
=====================
- Service route discovery during registration.
- Codec preprocessing: automatic gain control, voice activation detection,
noise reduction, acoustic echo cancellation (experimental).
- Support tel-URI as destination address for a call or instant message.
- User profile option to expand a telephone number to a tel-URI instead
of a sip-URI.
- Add descending q-value to contacts in 3XX responses for the redirection
services.
- AKAv1-MD5 authentication.
- Command line editing, history, auto-completion.
- Ignore wrong formatted domain-parameter in digest challenge.
- Match tel-URI in incoming call to address book.
- Determine RTP IP address for SDP answer from RTP IP address in SDP offer.
- Show context menu's when pressing the right mouse button instead of
after clicking.
- Swedish translation
- Resampled ringback tone from 8287 Hz to 8000 Hz
Bug fixes
---------
- Text line edit in the message form looses focus after sending an IM.
- Twinkle does not escape reserved symbols when dialing.
- Deregister all function causes a crash.
- Twinkle crashes at startup in CLI mode.
- Twinkle may freeze when an ALSA error is detected when starting
the ringback tone and the outgoing call gets answered very fast.
- User profile editor did not allow spaces in a user name.
New RFC's
---------
RFC 3608 - Session Initiation Protocol (SIP) Extension Header Field
for Service Route Discovery During Registration
24 august 2008 - 1.3.2
======================
- Fix in non-KDE version for gcc 4.3
23 august 2008 - 1.3.1
======================
- Disable file attachment button in message window when destination
address is not filled in
- Updated russian translation
Build fixes
-----------
- Fixes for gcc 4.3 (missing includes)
- non-KDE version failed to build
18 august 2008 - 1.3
====================
- Send file attachment with instant message.
- Show timestamp with instant messages.
- Instant message composition indication (RFC 3994).
- Persistent TCP connections with keep alive.
- Do not try to send SIP messages larger than 64K via UDP.
- Integration with libzrtcpp-1.3.0
- Xsession support to restore Twinkle after system shutdown/startup.
- Call snd_pcm_state to determine jitter buffer exhaustion (some ALSA
implementations gave problems with the old method).
- SDP parser allows SDP body without terminating CRLF.
- Russian translation.
Bug fixes
---------
- SIP parser did not allow white space between header name and colon.
- With "send in-dialog requests to proxy" enabled and transport
mode set to "auto", in-dialog requests are wrongly sent via TCP.
- Crash when a too large message is received.
- Comparison of authentication parameters (e.g. algorithm) were case-sensitive.
These comparisons must be case-insensitive.
- SDP parser could not parse other media transports than RTP/AVP.
- Twinkle sent 415 response instead of 200 OK on in-dialog INFO without body.
- Twinkle responds with 513 Message too large on an incoming call.
- ICMP error on STUN request causes Twinkle to crash.
- Add received-parameter to Via header of an incoming request if it contains
an empty rport parameter (RFC 3581)
- Twinkle did not add Contact header and copy Record-Route header
to 180 response.
New RFC's
---------
RFC 3994 - Indication of Message Composition for Instant Messaging
8 march 2008 - 1.2
==================
- SIP over TCP
- Automatic selection of IP address.
* On a multi-homed machine you do not have to select an IP address/NIC
anymore.
- Support for sending a q-value in a registration contact.
- Send DTMF on an early media stream.
- Choose auth over auth-int qop when server supports both for authentication.
This avoids problems with SIP ALGs.
- Support tel-URI in From and To headers in incoming SIP messages.
- Print a log rotation message at end of log when a log file is full.
- Remove 20 character limit on profile names.
- Reject an incoming MESSAGE with 603 if max. sessions == 0
- Delivery notification when a 202 response is received on a MESSAGE.
Bug fixes
---------
- When you deactivate a profile that has MWI active, but MWI subscription failed,
and subsequently activate this profile again, then Twinkle does not subscribe to
MWI.
- The max redirection value was always set to 1.
- Leading space in the body of a SIP message causes a parse failure
- Twinkle crashes with SIGABRT when it receives an INVITE with
a CSeq header that contains an invalid method.
- Latest release of lrelease corrupted translation files.
- Twinkle crashes on 'twinkle --cmd line'
- If an MWI NOTIFY does not contain a voice msg summary, twinkle
shows a random number for the amount of messages waiting.
- Depending on the locale Twinkle encoded a q-value with a comma
instead of a dot as decimal point.
Build changes
-------------
- Modifications for gcc 4.3.
- Remove fast sequence of open/close calls for ALSA to avoid
problems with bluez.
21 july 2007 - 1.1
==================
- French translation
- Presence
- Instant messaging
- New CLI commands: presence, message
Bug fixes
---------
- If a session was on-hold and Twinkle received a re-INVITE without
SDP, it would offer SDP on-hold in the 200 OK, instead of a brand
new SDP offer.
- Twinkle refused to change to another profile with the same user name
as the current active profile.
- ICMP processing did not work most times (uninitialized data).
- Replace strerror by strerror_r (caused rare SIGSEGV crashes)
- Fix deadlock in timekeeper (caused rare freezes)
New RFC's
---------
RFC 3428 - Session Initiation Protocol (SIP) Extension for Instant Messaging
RFC 3856 - A Presence Event Package for the Session Initiation Protocol (SIP)
RFC 3863 - Presence Information Data Format (PIDF)
RFC 3903 - Session Initiation Protocol (SIP) Extension
for Event State Publication
19 may 2007 - 1.0.1
===================
- Czech translation
- Check on user profiles having the same contact name at startup.
- When comparing an incoming INVITE request-URI with the contact-name,
ignore the host part to avoid NAT problems.
- A call to voice mail will not be attached to the "redial" button.
- Added voice mail entry to services and systray menu.
- New command line options: --show, --hide
- TWINKLE_LINE environment variable in scripts. This variable contains
the line number (starting at 1) associated with a trigger.
- Preload KAddressbook at startup.
- Allow multiple occurrences of the display_msg parameter in the incoming call
script to create multi-line messages.
- Handle SIP forking and early media interaction
Bug fixes
---------
- Fix conference call
- If lock file still exists when you start Twinkle, Twinkle asks
if it should start anyway. When you click 'yes', Twinkle does not start.
- Audio validation opened soundcard in stereo instead of mono
- When quitting Twinkle while the call history window is open, a segfault occurs
- When an incoming call is rejected when only unsupported codecs are offered,
it does not show as a missed call in the call history.
- Segfault when the remote party establishes an early media session without
sending a to-tag in the 1XX response (some Cisco devices).
- in_call_failed trigger was not called when the call failed before ringing.
- Escape double quote with backslash in display name.
- On some system Twinkle occasionally crashed at startup with the following
error: Xlib: unexpected async reply
Build Changes
-------------
- Remove AC_CHECK_HEADERS([]) from configure.in
- Configure checks for lrelease.
Other
-----
- Very small part of the comments has been formatted now for automatic
documentation generation with doxygen.
22 jan 2007 - 1.0
=================
- Local address book
- Message waiting indication (MWI)
* Sollicted MWI as specified by RFC 3842
* Unsollicited MWI as implemented by Asterisk
- Voice mail speed dial
- Call transfer with consultation
* This is a combination of a consultation call on the other line
followed by a blind transfer.
- Attended call transfer
* This is a combination of a consultation call on the other line
followed by a replacement from B to C of the call on the first line.
This is only possible if the C-party supports "replaces".
If "replaces" is not supported, then twinkle automatically falls
back to "transfer with consultation".
- User identity hiding
- Multi language support
This version contains Dutch and German translations
- Send BYE when a CANCEL/2XX INVITE glare occurs.
- When call release was not immediate due to network problems or protocol errors,
the line would be locked for some time. Now Twinkle releases a call in the
background immediately freeing the line for new calls.
- Escape reserved symbols in a URI by their hex-notation (%hex).
- Changed key binding for Bye from F7 to ESC
- When a lock file exists at startup, Twinkle asks if you want to override it
- New command line options: --force, --sip-port, --rtp-port
- Ring tone and speaker device list now also shows playback only devices
- Microphone device list now also shows capture only devices
- Validate audio device settings on startup, before making a call, before
answering a call.
- SIP_FROM_USER, SIP_FROM_HOST, SIP_TO_USER, SIP_TO_HOST variables for call scripts.
- display_msg parameter added to incoming call script
- User profile options to indicate which codec preference to follow
- Twinkle now asks permission for an incoming REFER asynchronously. This
prevents blocking of the transaction layer.
- Highlight missed calls in call history
- Support for G.726 ATM AAL2 codeword packing
- replaces SIP extension (RFC 3891)
- norefesub SIP extension (RFC 4488)
- SIP parser supports IPv6 addresses in SIP URI's and Via headers
(Note: Twinkle does not support transport over IPv6)
- Support mid-call change of SSRC
- Handling of SIGCHLD, SIGTERM and SIGINT on platforms implementing
LinuxThreads instead of NPTL threading (e.g. sparc)
Bug fixes
---------
- Invalid speex payload when setting ptime=30 for G.711
- When editing the active user profile via File -> Change User -> Edit
QObject::connect: No such slot MphoneForm::displayUser(t_user*)
- 32 s after call setup the DTMF button gets disabled.
- 4XX response on INVITE does not get properly handled.
From/To/Subject labels are not cleared. No call history record is made.
- The dial combobox accepted a newline through copy/past. This corrupted
the system settings.
- When a far-end responds with no supported codecs, Twinkle automatically
releases the call. If the far-end sends an invalid response on this
release and the user pressed the BYE button, Twinkle crashed.
- When using STUN the private port was put in the Via header instead of
the public port.
- Twinkle crashes once in a while, while it is just sitting idle.
Build changes
-------------
- If libbind exists then link with libbind, otherwise link with libresolv
This solves GLIBC_PRIVATE errors on Fedora
- Link with libboost_regex or libboost_regex-gcc
New RFC's
---------
RFC 3323 - A Privacy Mechanism for the Session Initiation Protocol (SIP)
RFC 3325 - Private Extensions to the Session Initiation Protocol (SIP) for
Asserted Identity within Trusted Networks
RFC 3842 - A Message Summary and Message Waiting Indication Event Package
for the Session Initiation Protocol (SIP)
RFC 3891 - The Session Initiation Protocol (SIP) "Replaces" Header
RFC 4488 - Suppression of Session Initiation Protocol (SIP)
REFER Method Implicit Subscription
01 oct 2006 - Release 0.9
=========================
- Supports Phil Zimmermann's ZRTP and SRTP for
secure voice communication.
ZRTP/SRTP is provided by the latest version (1.5.0) of the
GNU ccRTP library.
The implementation is interoperable with Zfone beta2
- SIP INFO method (RFC 2976)
- DTMF via SIP INFO
- G.726 codec (16, 24, 32 and 48 kbps modes)
- Option to hide display
- CLI command "answerbye" to answer an incoming or hangup an established call
- Switch lines from system tray menu
- Answer or reject a call from the KDE systray popup on incoming call
- Icons to indicate line status
- Default NIC option in system settings
- Accept SDP offer without m= lines (RFC 3264 section 5, RFC 3725 flow IV)
Bug fixes
---------
- t_audio::open did not return a value
- segmentation fault when quitting Twinkle in transient call state
- Twinkle did not accept message/sipfrag body with a single CRLF at the end
- user profile could not be changed on service redirect dialog
- Twinkle did not react to 401/407 authentication challenges for
PRACK, REFER, SUBSCRIBE and NOTIFY
Build changes
-------------
- For ZRTP support you need to install libzrtpcpp first. This library
comes as an extension library with ccRTP.
09 jul 2006 - Release 0.8.1
===========================
- Removed iLBC source code from Twinkle. To use iLBC you can
link Twinkle with the ilbc library (ilbc package). When you
have the ilbc library installed on your system, then Twinkle's
configure script will automatically setup the Makefiles to
link with the library.
Bug fixes
---------
- Name and photo lookups in KAddressbook on incoming calls may
freeze Twinkle.
Build improvements
------------------
- Added missing includes to userprofile.ui and addressfinder.h
- Configure has new --without-speex option
01 jul 2006 - Release 0.8
=========================
- iLBC
- Make supplementary service settings persistent
- Lookup name in address book for incoming call
- Display photo from address book of caller on incoming call
- Number conversion rules
- Always popup systray notification (KDE only) on incoming call
- Add organization and subject to incoming call popup
- New call script trigger points: incoming call answered, incoming call failed,
outgoing call, outgoing call answered, outgoing call failed, local release,
remote release.
- Added 'end' parameter for the incoming call script
- Option to provision ALSA and OSS devices that are not in the standard list
of devices.
- Option to auto show main window on incoming call
- Resized the user profile window such that it fits on an 800x600 display
- Popup the user profile selection window, when the SIP UDP port is occupied
during startup of Twinkle, so the user can change to another port.
- Skip unsupported codecs in user profile during startup
Bug fixes
---------
- Sometimes the NAT discovery window never closed
- When RTP timestamps wrap around some RTP packets may be discarded
- When the dial history contains an entry of insane length, the
main window becomes insanely large on next startup
- On rare occasions, Twinkle could respond to an incoming call for
a deactivated user profile.
- Credentials cache did not get erased when a failure response other
than 401/407 was received on a REGISTER with credentials.
- G.711 enocders amplified soft noise from the microphone.
Newly supported RFC's
---------------------
RFC 3951 - Internet Low Bit Rate Codec (iLBC)
RFC 3952 - Real-time Transport Protocol (RTP) Payload Format
for internet Low Bit Rate Codec (iLBC) Speech
Build notes
-----------
- New dependency on libboost-regex (boost package)
07 may 2006 - Release 0.7.1
===========================
- Check that --call and --cmd arguments are not empty
- When DTMF transport is "inband", then do not signal RFC2833 support in SDP
Bug fixes
---------
- CLI and non-KDE version hang when stopping ring tone
- The GUI allowed payload type 96-255 for DTMF and Speex, while
maximum value is only 127
- When a dynamic codec change takes place at the same time as a re-INVITE
Twinkle sometimes freezes.
- Sending RFC 2833 DTMF events fails when codec is speex-wb or speex-uwb
29 apr 2006 - Release 0.7
=========================
- Speex support (narrow, wide and ultra wide band)
- Support for dynamic payload numbers for audio codecs in SDP
- Inband DTMF (option for DTMF transport in user profile)
- UTF-8 support to properly display non-ASCII characters
- --cmd command line option to remotely execute CLI commands
- --immediate command line option to perform --call and --cmd without user
confirmation.
- --set-profile command line option to set the active profile.
- Support "?subject=<subject>" as part of address for --call
- The status icon are always displayed: gray -> inactive, full color -> active
- Clicking the registration status icon fetches current registration status
- Clicking the service icons enables/disables the service
- Fancier popup from KDE system tray on incoming call.
- Popup from system tray shows as long as the phone is ringing.
- Reload button on address form
- Remove special phone number symbols from dialed strings.
This option can be enabled/disabled via the user profile.
- Remove duplicate entries from the dial history drop down box
- Specify in the user profile what symbols are special symbols to remove.
- Changed default for "use domain to create unique contact header value" to
"no"
- New SIP protocol option: allow SDP change in INVITE responses
- Do not ask username and password when authentication for an
automatic re-regsitration fails. The user may not be at his desk, and
the authentication dialog stalls Twinkle.
- Ask authentication password when user profile contains authentication
name, but no password.
- Improved handling of socket errors when interface goes down temporarily.
Bug fixes
---------
- If the far end holds a call and then resumes a call while Twinkle has
been put locally on-hold, then Twinkle will start recording sound from
the mic and send it to the far-end while indicating that the call is
still on-hold.
- Crash on no-op SDP in re-INVITE
- Twinkle exits when it receives SIGSTOP followed by SIGCONT
- call release cause in history is incorrect for incoming calls.
Build improvements
------------------
- Break dependency on X11/xpm.h
26 feb 2006 - Release 0.6.2
===========================
- Graceful termination on reception of SIGINT and SIGTERM
Bug fixes
---------
- If the URI in a received To-header is not enclosed by '<' and '>', then
the tag parameter is erronesouly parsed as a URI parameter instead of a
header parameter. This causes failing call setup, tear down, when
communicating with a far-end that does not enclose the URI in angle
brackets in the To-header.
- Function to flush OSS buffers flushed a random amount of samples that
could cause sound clipping (at start of call and after call hold) when
using OSS.
- In some cases Twinkle added "user=phone" to a URI when the URI already
had a user parameter.
11 feb 2006 - Release 0.6.1
===========================
- action=autoanswer added to call script actions
- Performance improvement of --call parameter
- Synchronized dial history drop downs on main window and call dialog
- Dial history drop down lists are stored persistently
- Redial information is stored persistently
Bug fixes
---------
- When using STUN Twinkle freezes when making a call and the STUN
server does not respond within 200 ms (since version 0.2)
- Some malformed SIP messages triggered a memory leak in the
parser code generated by bison (since version 0.1)
- The lexical scanner jammed on rubbish input (since version 0.1)
05 feb 2006 - Release 0.6
=========================
- Custom ring tones (package libsndfile is needed)
- Twinkle can call a user defineable script for each incoming call.
With this script the user can:
* reject, redirect or accept a call
* define a specific ring tone (distinctive ringing)
- Missed call indication
- Call directly from the main window
- DTMF keys can by typed directly from the keyboard at the main window.
Letters are converted to the corresponding digits.
- Letters can be typed in the DTMF window. They are converted to digits.
- Call duration in call history
- Call duration timer while call is established
- Added --call parameter to command line to instruct Twinkle to make
a call
- Increased expiry timer for outgoing RTP packets to 160 ms
With this setting slow sound cards should give better sound quality
for the mic.
- System setting to disable call waiting.
- System setting to modify hangup behaviour of 3-way call. Hang up both
lines or only the active line.
- Replace dots with underscores in contact value
- Silently discard packets on the SIP port smaller than 10 bytes
- User profile option to disable the usage of the domain name in the
contact header.
- Graceful release of calls when quitting Twinkle
- Changed call hold default from RFC2543 to RFC3264
Bug fixes
---------
- An '=' in a value of a user profile or system settings parameter
caused a syntax error
- If a default startup profile was renamed, the default startup list
was not updated
- When call was put on-hold using RFC2543 method, the host in the
SDP o= line was erroneously set to 0.0.0.0
- When a response with wrong tags but correct branch was received, a
line would hang forever (RFC 3261 did not specify this scenario).
- If far end responds with 200 OK to CANCEL, but never sends 487 on
INVITE as mandated by RFC 3261, then a line would hang forever
- CPU load was sometimes excessive when using ALSA
01 jan 2006 - Release 0.5
=========================
- Run multiple user profiles in parallel
- Add/remove users while Twinkle is running
- The SIP UDP port and RTP port settings have been moved from the user
profile to system settings. Changes of the default values in the user
profile will be lost.
- DNS SRV support for SIP and STUN
- ICMP processing
- SIP failover on 503 response
- SIP and STUN failover on ICMP error
- When a call is originated from the call history, copy the subject to the
call window (prefixed with "Re:" when replying to a call).
- Remove '/' from a phone number taken from KAddressbook. / is used in
Germany to separate the area code from the local number.
- Queue incoming in-dialog request if ACK has not been received yet.
- Clear credentials cache when user changes realm, username or password
- Added micro seconds to timestamps in log
- Detecting a soundcard playing out at slightly less than 8000 samples per
second is now done on the RTP queue status. This seems to be more reliable
than checking the ALSA sound buffer filling.
- OSS fragment size and ALSA period size are now changeable via the system
settings. Some soundcard problems may be solved by changing these values.
- Default ALSA period size for capturing lowered from 128 to 32. This seems
to give better performance on some sound cards.
Bug fixes
---------
- With certain ALSA settings (eg. mic=default, speaker=plughw), the ALSA
device got locked up after 1 call.
- The ports used for NAT discovery via STUN stayed open.
- When a STUN transaction for a media port failed, the GUI did not clear
the line information fields.
- Sending DTMF events took many unnecessary CPU cycles
- Parse failure when Server or User-Agent header contained comment only
Newly supported RFC's
---------------------
RFC 2782 - A DNS RR for specifying the location of services (DNS SRV)
RFC 3263 - Session Initiation Protocol (SIP): Locating SIP Servers
28 nov 2005 - Release 0.4.2
===========================
- Microphone noise reduction (can be disabled in system settings)
- System tray icon shows status of active line and enabled services
- Call history option added to system tray menu
Bug fixes
---------
- Twinkle crashes at startup when the systray icon is disabled in the system settings.
- Line stays forever in dialing state when pressing ESC in the call window
19 nov 2005 - Release 0.4.1
===========================
- Fixed build problems with gcc-4.0.2 and qt3-3.4.4
18 nov 2005 - Release 0.4
=========================
- Interface to KAddressbook
- History of incoming and outgoing calls (successful and missed calls)
- History of 10 last calls on call dialog window for redialling
- Call and service menu options added to KDE sys tray icon
- Allow a missing mandatory Expires header in a 2XX response on SUBSCRIBE
- Big Endian support for sound playing (eg. PPC platforms)
- System setting to start Twinkle hidden in system tray
- System setting to start with a default profile
- System setting to start on a default IP address
- Command line option (-i) for IP address
Bug fixes
---------
- send a 500 failure response on a request that is received out of order
instead of discarding the request.
- 64bit fix in events.cpp
- race condition on starting/stopping audio threads could cause a crash
- segmentation fault when RTP port could not be opened.
- CLI looped forever on reaching EOF
- 64bit fix in events.cpp
- ALSA lib pcm_hw.c:590:(snd_pcm_hw_pause) SNDRV_PCM_IOCTL_PAUSE failed
- sometimes when quitting Twinkle a segmentation fault occurred
Build improvements
------------------
- Removed platform dependent code from stunRand() in stun.cxx
- It should be possible to build Twinkle without the KDE addons on a
non-KDE system
- new option --without-kde added to configure to build a non-KDE version
of Twinkle
22 oct 2005 - Release 0.3.2
===========================
- Fixed several build problams with KDE include files and
libraries.
If you already successfully installed release 0.3.1 then there is
no need to upgrade to 0.3.2 as there is no new functionality.
16 oct 2005 - Release 0.3.1
===========================
This is a minor bug fix release.
Bug fixes:
----------
- Command line options -f and -share were broken in release 0.3
This release fixes the command line options.
09 oct 2005 - Release 0.3
=========================
New functionality:
------------------
- ALSA support
- System tray icon
- Send NAT keep alive packets when Twinkle sits behind a symmetric firewall
(discovered via STUN)
- Allow missing or wrong Contact header in a 200 OK response on a REGISTER
Bug fixes:
----------
- Hostnames in Via and Warning headers were erroneously converted to lower case.
- t_ts_non_invite::timeout assert( t==TIMER_J ) when ACK is received
for a non-INVITE request that had INVITE as method in the CSeq header.
- The SIP/SDP parser accepted a port number > 65535. This caused an assert
- Segmentation fault on some syntax errors in SIP headers
- Line got stuck when CSeq sequence nr 0 was received. RFC 3261 allows 0.
- With 100rel required, every 1XX after the first 1XX response were discarded.
- Fixed build problems on 64-bit architectures.
- Dead lock due to logging in UDP sender.
- Segmentation fault when packet loss occurred while the sequence
number in the RTP packets wrapped around.
- Route set was not recomputed on reception of a 2XX response, when a 1XX
repsonse before already contained a Record-Route header.
30 jul 2005 - Release 0.2.1
===========================
New functionality:
------------------
- Clear button on log view window.
Bug fixes:
----------
- The system settings window confused the speaker and mic settings.
- Log view window sometimes opened behind other windows.
- Segmentation fault when SUBSCRIBE with expires=0 was received to end
a refer subscription.
- When a call transfer fails, the original call is received. If the line
for this call is not the active call however, the call should stay
on-hold.
- On rare occasions a segmentation fault occurred when the ring tone
was stopped.
- Log view window sometimes caused deadlock.
24 jul 2005 - Release 0.2
=========================
New functionality:
------------------
- STUN support for NAT traversal
- Blind call transfer service
- Reject call transfer request
- Auto answer service
- REFER, NOTIFY and SUBSCRIBE support for call transfer scenario's
* REFER is sent for blind call transfer. Twinkle accpets incoming
NOTIFY messages about the transfer progress.
Twinkle can send SUBSCRIBE to extend refer event subscription
* Incoming REFER within dialog is handled by Twinkle
Twinkle sends NOTIFY messages during transfer.
Incoming SUBSCRIBE to extend refer event subscription is granted.
- Retry re-INVITE after a glare (491 response, RFC 3261 14.1)
- Respond with 416 if a request with a non-sip URI is received
- Multiple sound card support for playing ring tone to a different
device than speech
- The To-tag in a 200 OK on a CANCEL was different than the To-tag in a provisional
response on the INVITE. RFC 3261 recommends that these To-tags are the same.
Twinkle now uses the same To-tag.
- Show error messages to user when trying to submit invalid values on the
user profile
- DTMF volume configurable via user profile
- Log viewer
- User profile wizard
- Help texts for many input fields (e.g. in user profile). Help can be accessed
by pressing Ctrl+F1 or using the question mark from the title bar.
Bug fixes:
----------
- A retransmission of an incoming INVITE after a 2XX has been sent
was seen as a new INVITE.
- If an OPTIONS request timed out then the GUI did not release its
lock causing a deadlock.
- If the URI in a To, From, Contact or Reply-To header is not
enclosed by < and >, then the parameters (separated by a semi-colon)
belong to the header, NOT to the URI.
They were parsed as parameters of the URI. This could cause the
loss of a tag-parameter causing call setup failures.
- Do not resize window when setting a long string in to, from or subject
Newly supported RFC's
---------------------
RFC 3265 - Session Initiation Protocol (SIP)-Specific Event Notification
RFC 3420 - Internet Media Type message/sipfrag
RFC 3489 - Simple Traversal of User Datagram Protocol (UDP)
Through Network Address Translators (NATs)
RFC 3515 - The Session Initiation Protocol (SIP) Refer Method
RFC 3892 - The Session Initiation Protocol (SIP) Referred-By Mechanism
27 apr 2005 - Release 0.1
=========================
First release of Twinkle, a SIP VoIP client.
- Basic calls
- 2 call appearances (lines)
- Call Waiting
- Call Hold
- 3-way conference calling
- Mute
- Call redirection on demand
- Call redirection unconditional
- Call redirection when busy
- Call redirection no answer
- Reject call redirection request
- Call reject
- Do not disturb
- Send DTMF digits to navigate IVR systems
- NAT traversal through static provisioning
- Audio codecs: G.711 A-law, G.711 u-law, GSM
Supported RFC's
---------------
- RFC 2327 - SDP: Session Description Protocol
- RFC 2833 - RTP Payload for DTMF Digits
- RFC 3261 - SIP: Session Initiation Protocol
- RFC 3262 - Reliability of Provisional Responses in SIP
- RFC 3264 - An Offer/Answer Model with the Session Description Protocol (SDP)
- RFC 3581 - An extension to SIP for Symmetric Response Routing
- RFC 3550 - RTP: A Transport Protocol for Real-Time Applications
RFC 3261 is not fully implemented yet.
- No TCP transport support, only UDP
- No DNS SRV support, only DNS A-record lookup
- Only plain SDP bodies are supported, no multi-part MIME or S/MIME
- Only sip: URI support, no sips: URI support
|