What's new in Swirc 3.4.7
Mar 12, 2024
- Added command /dcc
- Added event BATCH (IRCv3). The following types were added:
- chathistory
- netjoin
- netsplit
- znc.in/playback
- Added tab completion for:
- /mode
- Added the following config options:
- batch (bool)
- dcc (bool)
- dcc_cipher_suite (string)
- dcc_own_ip (string)
- dcc_port (int)
- dcc_upload_dir (string)
- multi_prefix (bool)
- Did code optimizations:
- Measure string length once, found by PVS-Studio.
- ...
- Enabled iconv_conversion by default.
- Fixed an off-by-one error in the IRC module. The previous program versions weren't really affected however.
- Fixed building on any setup where Ncurses is built with opaque types.
- Fixed new Coverity defects
- Fixed the precision of the error log size in KB.
- Improved C++ exception handling. Among other things, handle if 'new' throws.
- Renamed option ircv3_server_time to server_time and enabled it by default.
New in Swirc 3.4.6 (Nov 6, 2023)
- Added adoption of SPDX-tags for the distributed manual pages
- Added better detection of server Wallops
- Added command-line option -S (Force TLS)
- Added event 249 (RPL_STATSDEBUG)
- Added extensive use of the CPPFLAGS make macro
- Added handling of empty user@host combinations in Wallops messages
- Added handling of znc messages. (Made them look like notices and appear in the active window.)
- Added protection for bad filenames for IRC logs
- Added translations
- Changed the way of recognizing a user mode versus channel mode
- Did code improvements
- Fixed occurrences of hardcoded function names in messages
- Fixed typos in manual pages
- Improved C++ exception handling
- Limited notification messages in length
New in Swirc 3.4.4 (Jul 30, 2023)
- Added a man page that describes how to write themes.
- Added and made use of a pointer validation function.
- Added improved unicode support in the printtext and readline modules.
- Added usage of a binary search algorithm.
- Added validation of nicknames before they go into the names hash table.
- Allowed the names htbl modify API to alter names even if the list is incomplete. (But only in ICB mode.)
- Changed the file suffix for theme files from .the to .thm. (.the looks too much like the English word "the".)
- Closed an open stream before exit
- Defined noreturn for C++ in fallbackattrs.h
- Fixed hardcoded function names in error messages
- Fixed unchecked return values
New in Swirc 3.4.3 (Mar 10, 2023)
- Added event 320 (the same as 275 and 671, whois ssl)
- Added MULTIPLE new translations
- Added code improvements:
- Added constructors/destructors
- Added improved algorithms
- Added usage of initializer lists
- Added usage of new/delete
- Deleted unused includes
New in Swirc 3.4.2 (Feb 22, 2023)
- Added usage of typedefs (STRING, CSTRING, errno_t, ...)
- Fixed printtext() bugs due to not checking if the wide character passed to wcrtomb_s() or wcrtomb() is a null character.
New in Swirc 3.4.1 (Feb 19, 2023)
- Changed the requirements for checking if a connection is lost. (The change avoids flooding the server with PING commands better.)
- Improved algorithms.
- Optimized commonly used functions for speed.
- Replaced C-style casts in C++.
New in Swirc 3.4.0 (Feb 10, 2023)
- Added a SOCKS proxy client
- Added command /fetchdic
- Added destruction of null bytes on receive where appropriate
- Added spelling support with Hunspell
- Added the following config options:
- socks (bool)
- socks_atyp (int)
- socks_host (string)
- socks_port (string)
- spell (bool)
- spell_lang (string)
- spell_syswide (bool)
- Added usage of emplace_back()
- Fixed possible crashes
- Windows:
- Fixed launch by toast. (COM appends the -Embedding flag to the args passed, which caused troubles.)
- It is no longer necessary to enable the option "Use Unicode UTF-8 for worldwide language support", because this is now done in the exe-manifest, only for Swirc.
- Upgraded to...
- Curl 7.87.0
- LibreSSL 3.6.2
New in Swirc 3.3.9 (Jan 7, 2023)
- Added micro optimizations
- Added rules for nickname highlighting
- Added SASL auth mechanism: external
- Added support for the GNU Hurd OS
- Added tab completion for:
- /connect
- /time
- /version
- Added the following commands:
- /qbot
- /stats
- Added the following config options:
- cmd_type_prot (bool)
- ctcp_reply (bool)
- qbot_host (string)
- sasl_x509 (string)
- Improved tab completion for:
- /msg
- /notice
- /whois
New in Swirc 3.3.8 (Nov 27, 2022)
- Added an ident protocol daemon (which is OFF by default)
- Added and made use of printf_and_free()
- Added exception handling
- Added tab completion for /theme
- Added the following config options:
- awaymsgs_in_privconv (bool)
- identd (bool)
- identd_fakenames (bool)
- identd_port (int)
- Added the following events:
- 413 (ERR_NOTOPLEVEL)
- 414 (ERR_WILDTOPLEVEL)
- 415 (ERR_BADMASK)
- Added usage of __func__
- Added usage of printtext_print()
- Deleted commented-out code
- Deleted unused includes
- Did code refactoring
- Fixed display of IPv6 addresses in event 338
- Fixed verification of the X509 certificate presented by the peer
- Made const arrays static const
- Made improvements to the following files:
- commands/theme.c
- network.cpp
- printtext.cpp
- Moved squeeze_text_deco() to a separate file
- Reduced VA args in printtext calls
New in Swirc 3.3.7 (Oct 22, 2022)
- Added preprogrammed IRC network OFTC
- Added usage of swircpaths.h, a header which is automatically generated during the build process.
- Fixed a case of a possibly negative array subscript
- Added code to the following scripts:
- posixshell/link_with_gnu_libidn.sh
- posixshell/link_with_libnotify.sh
New in Swirc 3.3.6 (Oct 5, 2022)
- Added cryptographic functions:
- Added subcommand passwd_s to /sasl which can be used to securely store encrypted SASL passwords in swirc.conf. The encryption technique practice the use of AES and SHA.
- Added tab completion for:
- /msg
- /notice
- /sasl
- Changed the program behavior to:
- Jump between ICB and IRC mode depending on the port number
- Not create core dump files if NDEBUG is defined at compile time
- Not echo the server password on input (command line flag -p)
- Fixed a bug so if a connection attempt fails it's possible to reconnect again after /disconnect.
- Fixed code duplication
- Fixed insufficient out of range check, off-by-one, in command /unignore.
- Made small improvements:
- Added usage of C++17 fallthrough attr
- Added usage of PATH_MAX
- Added usage of __func__ instead of hardcoding it (for example in error messages)
- Fixed redundant checks
- Reduced scope of variables
- Switched to usage of 'sizeof' in BZERO() calls
- Prevented the config hash table from being paged to the swap area.
- Rewrote commands/sasl.c in C++
- Updated preprogrammed IRC servers:
- Added port numbers and server descriptions
- Added the IRCNow network
- Deleted the Blitzed network
New in Swirc 3.3.6 (Oct 5, 2022)
- added cryptographic functions:
- Added subcommand passwd_s to /sasl which can be used to securely store encrypted SASL passwords in swirc.conf. The encryption technique practice the use of AES and SHA.
- Added tab completion for:
- /msg
- /notice
- /sasl
- Changed the program behavior to:
- jump between ICB and IRC mode depending on the port number
- not create core dump files if NDEBUG is defined at compile time
- not echo the server password on input (command line flag -p)
- Fixed a bug so if a connection attempt fails it's possible to reconnect again after /disconnect.
- Fixed code duplication
- Fixed insufficient out of range check, off-by-one, in command /unignore.
- Made small improvements:
- Added usage of C++17 fallthrough attr
- Added usage of PATH_MAX
- Added usage of __func__ instead of hardcoding it (for example in error messages)
- Fixed redundant checks
- Reduced scope of variables
- Switched to usage of 'sizeof' in BZERO() calls
- Prevented the config hash table from being paged to the swap area.
- Rewrote commands/sasl.c in C++
- Updated preprogrammed IRC servers:
- Added port numbers and server descriptions
- Added the IRCNow network
- Deleted the Blitzed network
New in Swirc 3.3.5 (Jul 28, 2022)
- Added command /cap
- Added config option iconv_conversion (bool)
- Added config option mouse_events
- Added new translations
- Added usage of noexcept and installed a terminate handler
- Changed the startup screen to show the current language
- Fixed C style casts in C++
- Fixed SASLprep by switching to usage of stringprep_profile(). Prep now works on Windows too!
- Fixed memory leaks
- Fixed unhandled exceptions
- Improved memory handling
- Improved the contents of /help
- Completed translating everything to Swedish
- Made config option mouse change take affect at once
- Made improvements to events/cap.c
- Made small optimizations
- Made the dot mo files available for read operations with unveil()
- Updated the TODO :-)
New in Swirc 3.3.4 (May 4, 2022)
- Added a TLS server (to be used in a future version)
- Added config option mouse (defaults to no)
- Added config option server_cipher_suite
- Added creation of OpenSSL scripts
- Added event 335 (RPL_WHOISBOT)
- Added global hashfunctions
- Added preprogrammed IRC network
- AlphaChat
- Added scrolling using the mouse
- Added theme item:
- nicklist_my_nick_color
- whois_bot
- Added translations
- Changed the statusbar to display readline stats
- Converted
- commands/services.c -> commands/services.cpp
- config.c -> config.cpp
- Defined SLASH once
- Defined and made use of:
- UNUSED_PARAM()
- UNUSED_VAR()
- colorarray_t
- g_beginthread_failed
- g_received_welcome
- usage_t
- Fixed bugs discovered with protocol fuzzing
- Handle PRIVMSGs from "my" server
- Handle truncation of ICB messages, i.e. allow longer messages than
- ICB_MESSAGE_MAX.
- Improved scrolling
- Made refactoring to multiple files
- Moved the names hash table modify API
- Print PRIVMSGs to irc channels from users that aren't in them. (No
- lookup error.)
- Reduced code duplication
- Reformatted and reindented files
- Windows:
- Added GNU LibIntl 0.19.8.1 which is part of
- gettext
- Curl 7.83.0
- LibreSSL 3.5.2
New in Swirc 3.3.3 (Nov 27, 2021)
- Added event 531. Undocumented in the RFC. (You cannot send CTCPs to this user whilst they have the +T u_noctcp mode set.)
- Added event 728 and 729. Undocumented in the RFC. Channel Quiet List.
- Added function xstrnlen() and made use of it
- Added new Libera Chat servers
- Added null checks
- Deleted unused includes
- Fixed macro redefinitions
- Fixed unchecked return values
- Made improvements to the following files:
- commands/invite.c
- commands/notice.cpp
- commands/services.c
- events/invite.cpp
- events/wallops.cpp
- assertAPI.c
- errHand.c
- icb.c
- Added status message Idle-Mod.
- Added status message Timeout.
- readlineTabCompletion.c
- Refactoring
- ...
- Reformatted and reindented files:
- commands/me.c
- commands/msg.c
- commands/squery.cpp
- commands/znc.cpp
- events/account.cpp
- events/banlist.cpp
- events/servlist.cpp
- statusbar.cpp
- titlebar.c
- ...
- Debian:
- Added patches
- Windows:
- Upgraded to LibreSSL 3.4.2
New in Swirc 3.2.0 (Feb 18, 2020)
- Added:
- Logging. Which can be toggled on/off with CTRL+L per window and works while IRC connected. The default is off for all windows.
- Tab completion
- Better detection for connection loss
- Changed:
- For C++, prefer const_cast and static_cast respectively, instead of C style casts.
- Fixed:
- Possibly lossy type conversions
- Readline bugs
New in Swirc 1.6 (May 26, 2017)
- Added:
- Event 479. Illegal channel name.
- Event 716, 717. Error responses for CTCP requests.
- Changed:
- The statusbar to display channel modes
- Fixed:
- Using plain integer as NULL pointer
- Possible dereference of NULL pointer
- A couple of small errors
- Handle if server sends names for a particular channel twice or more. See this as a vulnerability fix.
- A memory leak in net_ssl_check_hostname. The leak occurred each time a new TLS/SSL connection was established if config option hostname_checking was set to YES (the default).