All notable changes to this project will be documented in this file.
- Added command
/announce
. - Added command-line option
-X
(Disable all IRCv3 extensions) - Added event
CHGHOST
(IRCv3.) - Added option
account_tag
(bool). - Added option
chghost
(bool). Send a notification when clients change their username or host. Defaults to yes. - Added option
extended_join
(bool). - Added the
NEW
andDEL
CAP subcommands. And implicitly enabled thecap-notify
extension. - Added the following SASL auth mechanisms:
SCRAM-SHA-1
SCRAM-SHA-512
- Changed the program to:
- Init/deinit Windows sockets once.
- Not terminate the DCC server on IRC disconnect. It is Client-to-Client which means file transfers can continue. IRC is only used for the negotiation.
- Output a reason if
SSL_connect()
fails. - Output a reason if
tls_server::get_accept_bio()
fails.
- Did code improvements:
- Added default constructors
- Reduced duplication
- Reduced scope of variables
- Removed redundant checks
- Replaced macros for constants
- Usage of initializer lists
...
- Enabled
account_notify
by default. - Enabled more colors for BSD and macOS.
- Fixed cases of uncontrolled allocation sizes.
- Fixed potential signed integer overflows.
- Upgraded to LibreSSL 4.0.0
- Added command
/wholeft
(alias/wl
.) - Added option
notifications
(bool). Turns notifications on/off. - Added new translations.
- Added support for netjoin/netsplit. Few IRC server software support the batches which were added in 3.4.7. This release comes with its own implementation.
- Improved
xwcwidth()
. I.e. added more full width character ranges, and switched to a better search algorithm.
- Added event 468 (
ERR_INVALIDUSERNAME
) - Added usage of
nullptr
. - Changed the program to not start reconnecting on event 433
(
ERR_NICKNAMEINUSE
) if a connection is in progress. - Fixed CWE-190 bugs found by Coverity.
- Fixed a few potential data races found by TSan.
- Fixed a null pointer dereference.
- Improved the thread safety.
- Added the following commands:
/voice
/devoice
- Added tab completion for:
/deop
/kick
/kickban
/op
- Added translations.
- Changed the program to:
- Output the number of messages in a batch.
- Output the number of nicks in a netjoin/netsplit plus the server hostnames.
- Did code improvements:
- Explicitly specified the size of multiple arrays (MISRA rule, found by PVS-Studio).
- Fixed octal constants (MISRA rule, found by PVS-Studio).
- Fixed redundant checks and expressions.
- Harnessed the power of templates and defined
ARRAY_SIZE()
differently for C++. - Marked variables with
const
andimmutable_cp_t
respectively. - Reduced the scope of variables.
- Variable initializations.
- ...
- Fixed the begin/end messages of a batch to not end up in the status window.
- List all commands dynamically in the output of
/help
, i.e. calculate the cols/rows with respect to the current window size.
- 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
toserver_time
and enabled it by default.
- 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
- Added command-line option
-W
- Added tab completion for:
/cs
,/chanserv
/ns
,/nickserv
/squery
- Added the following commands:
/admin
/die
/gline
/info
/ison
/kline
/rehash
/restart
/servstats
/wallops
- Added the following events:
- 211 (
RPL_STATSLINKINFO
) - 212 (
RPL_STATSCOMMANDS
) - 216 (
RPL_STATSKLINE
) - 219 (
RPL_ENDOFSTATS
) - 242 (
RPL_STATSUPTIME
) - 256 (
RPL_ADMINME
) - 257 (
RPL_ADMINLOC1
) - 258 (
RPL_ADMINLOC2
) - 259 (
RPL_ADMINEMAIL
) - 303 (
RPL_ISON
) - 371 (
RPL_INFO
) - 374 (
RPL_ENDOFINFO
)
- 211 (
- Added translations
- Did code improvements
- Fixed a bug which caused the program to exit silently without any
message. This when turning logging on for a window. The solution was
to replace
fprintf()
withfprintf_s()
.
- 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
- And more...
- Added code improvements:
- Added constructors/destructors
- Added improved algorithms
- Added usage of initializer lists
- Added usage of new/delete
- Deleted unused includes
- ...
- Added event
320
(the same as275
and671
, whois ssl) - Added MULTIPLE new translations
- Added usage of typedefs (
STRING
,CSTRING
,errno_t
, ...) - Fixed printtext() bugs due to not checking if the wide character
passed to
wcrtomb_s()
orwcrtomb()
is a null character.
- 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++.
- Fixed missing DLLs. Unfortunately some DLLs were missing after adding the dependency on Hunspell. Since I am running a dev environment I had them my PATH and therefore didn't notice it.
- 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
- 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...
- 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
- Fixed building on riscv64. Contributed by Eric Long - thanks!
- 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
)
- 413 (
- 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
- Upgraded to LibreSSL 3.6.1
- Added code to the following scripts:
posixshell/link_with_gnu_libidn.sh
posixshell/link_with_libnotify.sh
- 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
- Fixed a bug that made Swirc fail to start with error
renamed executable
. This was due to that_get_pgmptr()
signaled success but stored an empty string, which only occurred on some Windows setups. (Reported by cpkio - thanks!)
- Added cryptographic functions
- Added subcommand
passwd_s
to/sasl
which can be used to securely store encrypted SASL passwords inswirc.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 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 :-)
- Added a GNU bundle containing:
- gettext runtime 0.21
- libiconv 1.17
- libidn 1.38
- Fixed missing DLL file
libiconv-2.dll
. I had it in my PATH so I didn't notice it.
- 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
- Added event
531
. Undocumented in the RFC. (You cannot send CTCPs to this user whilst they have the +Tu_noctcp
mode set.) - Added event
728
and729
. 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
.
- Added status message
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
- ...
- Added patches
- Upgraded to LibreSSL 3.4.2
- Added command line option
-j
- Added function
getuser()
and made use of it - Added null checks
- Added the following command aliases:
/j
(/join
)/p
(/part
)
- Added the following commands:
/ignore
/unignore
- Fixed unchecked return values
- Made improvements to the following files:
commands/connect.c
events/channel.cpp
events/misc.cpp
events/notice.cpp
events/privmsg.cpp
events/welcome.cpp
events/whois.cpp
dataClassify.c
log.c
nestHome.c
- Reformatted and reindented files
- Rewrote the
/join
and/part
commands in C++ - Updated the translations
- Fixed terminal resizing. (Increasing the size is ok.)
- The PDC library has been rebuilt with the
option
UTF8=Y
which makes PDCurses ignore the system locale. So for Windows computers running Swirc UTF-8 is now forced. This means you should enable the option Use Unicode UTF-8 for worldwide language support. In order to do so under Windows 10:- Language preferences
- Administrative language settings
- Change system locale
- Check the option and click OK
- Added command line option
-R
(Disable TLS/SSL peer verification) - Added configuration flag
--without-libintl
- Added key F1 (Output help)
- Configuration option
joins_parts_quits
now defaults to NO - Documented F5 - F10 in command
/colormap
- Fixed "no text to send" bug
- Made improvements to the following files:
events/auth.c
- Translated parts to German, Finnish, French and Swedish.
- Added function
errdesc_by_last_err()
and made use of it - Added key F3 (scroll nicklist up) and F4 (scroll nicklist down)
- Added new modes and options for TLS/SSL connections
- Added nicklist
- Added null checks
- Added preprogrammed network name libera
- Added support for partial writes in
net_ssl_send()
- Added theme item
nicklist_nick_color
- Added theme item
nicklist_privilege_color
- Added theme item
nicklist_vline_color
- Asserted that the program is terminated correctly
- Defined and made use of
addrof()
- Defined and made use of
g_textdeco_chars
- Deleted
ToastActivator_i.c
- Deleted
ToastActivator_p.c
- Deleted
dlldata.c
- Deleted command
/n
- Explicitly set client mode for TLS/SSL connections
- Fixed "use after free" bug in
/cycle
- Fixed a bug in
/quit
that resulted in SIGPIPE due to callingSSL_shutdown()
on an already shutdown socket. - Fixed the behavior of
net_ssl_recv()
by checking the condition ofSSL_pending()
. - Fixed unchecked return values
- Made improvements to the following files:
io-loop.c
irc.c
network-openssl.c
network.cpp
pthrMutex.c
readline.c
readlineAPI.c
sig-unix.c
sig-w32.c
vcMutex.c
window.c
- Modified the scrolling behavior
- Moved defines
- Reformatted and reindented files
- Renamed functions and patterns
- Rewrote the printtext module in C++ and made multiple improvements!
- Upgraded to:
- Added checking of
term_is_too_small()
- Added null checks
- Defined
g_conversion_failed
and made use of it - Defined
g_time_error
and made use of it - Fixed a bug that could lead to null pointer comparison
- Fixed limited prompt length
- Fixed stricter checking of channel names
- Fixed unchecked return values and made code improvements
- Improved automatic resizing
- Reduced code duplication
- Rewrote
event_invite()
and thus fixed a vulnerability that imply that a malicious IRC server message could cause a crash. (Reported by Michael Ortmann.) - Rewrote
events/names.c
using C++ and made various improvements
- Added logging of program name and PID for debug/error messages
- Added tab completion for:
/help
/znc
- Fixed multiple non-ANSI function declarations
- Fixed multiple sign-compare warnings
- Fixed unchecked return values
- Improved the configure script
- Splitted the configure script into smaller parts
- Made functions that yet weren't declared at file scope to be
- WIN32: fixed behavior in
/quit
- WIN32: upgraded to LibreSSL 3.2.4
- Command
/servlist
: used to list services currently connected to the network./squery
: used for communication with irc network services./znc
(for communication with znc)
- Event
- 234 (
RPL_SERVLIST
) - 235 (
RPL_SERVLISTEND
) - 493. Undocumented in the RFC. ngIRCd:
You must share a common channel with [...]
.
- 234 (
network-openssl.c
:suite_secure
:TLSv1.3:TLSv1.2+AEAD+ECDHE:TLSv1.2+AEAD+DHE
- From obsolete
ctime()
calls to instead usestrftime()
- To seed the random number generator using a new approach. (The deterministic RNG isn't used in a security context anyway.)
- Command-line option
-P
. (It disabled SASL authentication but didn't end IRCv3 capability negotiation.)
- LibreSSL 3.1.4
- Improved documentation
- More colors for Windows and a synchronized colormap
- Make target (
check
) for running unittests - Command-line option
-C
(Do not change color definitions)-P
(Permanently disable SASL authentication)
- Tab completion for
/query
/whois
- Display logging in statusbar
- A possible out-of-bounds read/write array operation
- Code improvements
- Multiple events to use try-catch blocks
- Stopped using
free_not_null()
asfree()
handles null
- Color 11
- Multicolor support. For terminals supporting minimum 256 colors.
- Command
/colormap
/echo
- Tab completion for
/set
- Color (Note: For terminals supporting minimum 16 colors)
- Grey
- Light Grey
- Multiple occurrences where:
- Pointer parameters could be declared as pointing to const
- Tab completion bugs
- Code improvements
- Fetching of the Mozilla CA certificate store (in PEM format) for Windows builds
- Improved help and documentation
- Updated setver script :-)
- Multiple occurrences where:
- Pointer parameters could be declared as pointing to const
- Previously assigned value to a variable hasn't been used
- 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
- For C++, prefer
const_cast
andstatic_cast
respectively, instead of C style casts.
- Possibly lossy type conversions
- Readline bugs
- Possible readline deadlock
- Command-line option
-4
(Use IPv4 addresses)-6
(Use IPv6 addresses)-d
Debug logging
- Event
- 464 (
ERR_PASSWDMISMATCH
)
- 464 (
- Preprogrammed network name:
- SASL auth mechanism SCRAM-SHA-256
- Made command
/say
available for ICB
- Command-line option
-p
(which queries the user for a connection password). It has been broken for some time but I haven't noticed it until now. - Connection to a IPv6-only host. (Reported by Ross Richardson).
- Reconnection with connection password
- Help for command
/connect
/sasl
- SUPPORT FOR THE ICB PROTOCOL
- Command
/beep
/boot
/group
/kill
/passmod
- Error messages (in order to improve them)
- Better reconnection
- Improved functions
- Multiple occurrences of
Conditional expression should have essentially Boolean type
- Spelling errors
- Code improvements
- Cleaner auto-generation of configs and themes
- More color pairs
- Tell if a command is unknown
- Tell if away from keyboard
say()
- Colorized statusbar
- PDCurses 3.9
- Command
/ban
+/unban
/kickban
/op
+/deop
- Event
- 696. Undocumented in the RFC. (You must specify a parameter for the key mode).
- 698. Undocumented in the RFC. (Channel ban list does not contain
...
).
- Preprogrammed network name anonops.
RPL_BOUNCE
->RPL_ISUPPORT
SW_NORET
->NORETURN
- Don't shutdown irc connection on runtime error in:
event_join()
event_kick()
event_part()
swirc_wprintw()
due to deprecation
- Reported by MAGA:
- Issues with protocol colon escaping
- Reproducible crash from protocol fuzzing
/cycle
fails when a channel key is in use
- Reproducible crashes from protocol fuzzing
- A rewritten interpreter
- Linux: hardened builds
- Code improvements
- Event
- 416. Officially undocumented. (output too large, truncated)
- Improved help for command
/mode
/theme
/who
- Install-destination of the manual pages
- Missing null checks
- A banner in WiX
- Names module to use DJB2 hashing (for more efficient results)
- Impact of a possibly uninitialized variable
- Possible resource leaks
- Unchecked return values
- LibreSSL 2.9.1
- Command
/cleartoasts
- Improved help for command
/join
/set
- Option
beeps
- Configure script messages
- Default values for the following options:
nickname
real_name
username
- UNIX: Produce a stripped executable
- WIN32: Compile with O2
- Option
disable_beeps
- Algorithm improvements
- The possibility of desktop notifications with the help of configure
flag
--with-libnotify
- Code improvements
- Event
- PONG
- 451 (
ERR_NOTREGISTERED
)
- Option
joins_parts_quits
(Show JOIN/PART/QUIT events?)reconnect_backoff_delay
: The number of seconds that should be added to each reconnect attempt (0-99)reconnect_delay
: Seconds to consume before the first reconnect attempt (0-999)reconnect_delay_max
: Maximum reconnect delay in seconds (0-999). Regardless of the other related reconnect settings.reconnect_retries
: If the IRC connection is lost, how many attempts should be performed to get the connection working again before giving up?
- Lowered recv/send timeouts during connection establishment for faster processing
- Don't require irc connection for command
/disconnect
- Scrolling behavior with the help of
arc4random()
- Bugs in command
- /kick
- /part
- Typos
- PDCurses 3.8
- Extended help for ALL commands
- Toast activated launch argument
- Windows:
SpawnMessageLoop()
happened to be a mistake and was therefore deleted!
- Cases of missing deinitializations regarding names in a channel!
- Thread termination!
- Readline is now non-blocking during connection to a server!
- Reorganized changelog :-)
- Windows: Improved installer
- Event AWAY
- Option
away_notify
invite_notify
- Rewrote
event_cap()
event_privmsg()
- ...
- MULTIPLE functions to use try-catch blocks
- A dependency on uninitialized memory!
- Memory leaks
- Off-by-one error
- Curl 7.62.0
- LibreSSL 2.8.2
- A
swirc.conf
manual page - Command /oper
- Event
ACCOUNT
WALLOPS
- 381 (
RPL_YOUREOPER
) - 491 (
ERR_NOOPERHOST
) - 908 (
RPL_SASLMECHS
)
- Option
account_notify
auto_op_yourself
- Option
ircv3_server_time
is now working
- Option
encoding
recode
- OpenBSD: Uses
unveil()
if available - Windows: Passes tests of Windows App Certification Kit
- Option
ircv3_server_time
currently a no-opnickname_aliases
. A space separated list of nickname aliases which are used, in addition to the default nickname, to highlight a message if it matches any of the aliases given by this setting.
- Several code improvements
- Unit tests for
is_alphabetic()
is_numeric()
- Windows 10 toast notifications
- Certain error messages
- Output Swirc homepage on CTCP version reply
- Possibly lossy conversions
- Some functions that should be static, but weren't...
- Windows: MSI installer
- Command /set
- New build system for
- UNIX
- Windows
- Unit tests for
int_diff()
int_sum()
size_product()
squeeze_text_deco()
sw_strcat()
sw_strcpy()
- Use of
size_product()
in multiple places
- Linux: fix cflags with pkg-config
- Name of function
Strcolor
tostrColor
Strdup_printf
tostrdup_printf
Strdup_vprintf
tostrdup_vprintf
Strfeed
tostrFeed
Strings_match_ignore_case
tostrings_match_ignore_case
Strings_match
tostrings_match
- Send
/whois
onspawn_chat_window()
when on air and the window isn't an irc channel. - The printtext color map
- Building for NetBSD
- Curl 7.60.0
- LibreSSL 2.7.3
- PDCurses 3.6
- Command alias
- /cs (for chanserv)
- /ns (for nickserv)
- Event
- 465 (
ERR_YOUREBANNEDCREEP
) - 466 (
ERR_YOUWILLBEBANNED
)
- 465 (
size_to_int()
which asserts given conversion isn't lossyxfopen()
which is a wrapper forfopen
andfopen_s
xmbstowcs()
which is a wrapper formbstowcs
andmbstowcs_s
xstrerror()
which is a wrapper forstrerror_s
andstrerror_r
- Windows: always produce UTF-8 output
- Errors in the license (more specifically in the disclaimer)
- Key
- CTRL+a (move to beginning of line)
- CTRL+e (move to end of line)
- Windows: Machine type from x86 to x64 which means that a 64-bit executable will be built next time
- Windows: Library issues causing the newly introduced command /sasl to work improperly
- Command /sasl
- Event
- 462 (
ERR_ALREADYREGISTRED
) - 486 (You must log in with services to message this user)
- 901 (
RPL_LOGGEDOUT
) - 902 (
ERR_NICKLOCKED
) - 903 (
RPL_SASLSUCCESS
) - 904 (
ERR_SASLFAIL
) - 905 (
ERR_SASLTOOLONG
) - 906 (
ERR_SASLABORTED
) - 907 (
ERR_SASLALREADY
)
- 462 (
- Key
- F11 (close window)
- F12 (close all private conversations)
- Many small improvements
- Option
sasl
sasl_mechanism
sasl_password
sasl_username
- Support for SASL authentication during registration process
- Tor hidden service to freenode servers
- Browsing the command history caused the program to freeze if the next/prev command exceeded a certain count!
- Command /theme for management of themes on-the-fly
- Enhancements to the printtext module
- Event 442
ERR_NOTONCHANNEL
- Theme item
slogan
- WIN32: use of function
MessageBox()
in the errHand module
- Theme item
sw_ascLogotype_color
tologo_color
- Turned
nodelay()
OFF which reduces CPU usage - WIN32: theme item
term_use_default_colors
will always be set to NO
- Buggy behavior of
squeeze_text_deco()
!
- Event
- 479 (Illegal channel name)
- 716 and 717 (Error responses for CTCP requests)
- The statusbar to display channel modes
- Occurrences of
- possible dereferences of null pointers
- usage plain integers as null pointers
- Handle if server sends names for a particular channel twice or more
net_ssl_check_hostname
: memory leak.
- Config option
cipher_suite
. Valid values are- secure
- compat
- legacy
- insecure
- Config option
hostname_checking
- Event 461 (
ERR_NEEDMOREPARAMS
) - Function
X509_check_host
for implementations that lacks support for it - Via /connect it's now possible to connect, only by specifying a particular IRC network, preprogrammed networks are:
- ASCII logo
- Connection timeout to 45 seconds
- Set
ssl_verify_peer
to YES even on WIN32 - Statusbar to display user modes
- Title for status window (to Swirc homepage)
- A command history feature bug
- Improved TLS/SSL security
- Key enter for Windows
- Usage for /who. (Parameter mask is mandatory.)
- Broadcasting of channel activity if our nickname matches certain patterns
- Capability of reading a...
- CTCP TIME reply (requested by /time)
- CTCP VERSION reply (requested by /version)
- Command
- /close
- /time
- /version
- Event
- 492. Official name:
ERR_NOSERVICEHOST
. On InspIRCd: User does not accept CTCPs. - 500. Undocumented in the RFC. (Only a server may modify the +r user mode)
- 492. Official name:
- WIN32: A resource script
- If server port is 6697 automatically set TLS/SSL on
- Code duplication
- A bogus behavior in /connect
- Better performance
- CTCP VERSION reply bug
- Save nickname, username and real name automatically to the config if customized by the command-line.
event_notice
: handle an empty user@host combination
- Broadcasting of window activity for private messages
- Command
- /cycle
- /rules
- /who
- Command line option
-i
for ICB mode (Internet Citizen's Band). Plans are to support the protocol but it's not implemented yet! - Event
- 232, 308 and 309 (numeric replies for /rules -- undocumented in the RFC)
- 315 (
RPL_ENDOFWHO
) - 352 (
RPL_WHOREPLY
) - 421 (
ERR_UNKNOWNCOMMAND
) - 435. Undocumented in the RFC. (Cannot change nickname while banned on channel).
- 437 (
ERR_UNAVAILRESOURCE
) - 444 (
ERR_NOLOGIN
) - 477 (
ERR_NOCHANMODES
) - 484 (
ERR_RESTRICTED
)
- Attention: Don't verify peer per default on WIN32 on SSL connections due to unable to get local issuer certificate.
- Connection timeout to 15 seconds
- The prompt for the status window to nothing...
NAMES_HASH_TABLE_SIZE
to 4500event_notice
: output IRC prefix + params on error.
- Instead of using slots for chunks of names use a linked list!
- Printtext: switch off all terminal attributes during indentation.
- Handle empty user@host combination for
event_join()
event_kick()
event_part()
event_privmsg()
event_quit()
event_topic_chg()
- Signal 11 when connecting to Slack.
- A function to show error log size on startup
- Checks for printflike functions
- Checks in order to prohibit the program from running with superuser privileges (aka root)
- Command history feature
- Logging to the error log for settings that are detected with invalid values
- GNU/Linux and OS X: compile using optimization level 2.
- Command line option
-p
. Instead of taking an argument it will now query the user for a password during connection to an IRC server. - The name of function
PrintAndFree()
toprint_and_free()
and its behavior. Plus multiple commands to use it. event_names_print_all()
: adjust the column-width with respect to the longest name in each column.
- Printtext: A problem with converting a wide character to a multibyte sequence due to EILSEQ
- A bug regarding that mode +q has different meanings on different server software (IRCd's)
- Possible crash due to resizing the terminal while connection is in progress
NAMES_HASH_TABLE_SIZE
to 6500
- Duplicated code
- Absence of An macro in the man page
- Readline:
session_destroy
: Get rid of possibly issued warning regarding: discards qualifiers from pointer target type. src/unix.mk
: provide a standard default target all- io-loop: Get rid of zero-length printf format string warnings. (They weren't harmful in the first place.)
- Command
- /banlist
- /chanserv
- /exlist
- /ilist
- /nickserv
- Additional data to the manual page
- Event
- 324 (
RPL_CHANNELMODEIS
) - 329. Undocumented. Channel date of creation.
- 346-349 (numeric replies to /exlist and /ilist)
- 367 (
RPL_BANLIST
) - 368 (
RPL_ENDOFBANLIST
) - 487. Undocumented in the RFC. An error meaning that /msg target ChanServ or NickServ is no longer supported (in favor of /chanserv and /nickserv).
- 324 (
- On OpenBSD: restrict system operations by using pledge() if it's available.
- Window scrolling capabilities!
- /msg: fail if recipient is ChanServ or NickServ. (Use of the commands /chanserv and /nickserv should be considered instead.)
- Interpreter: handle string truncation when copying an identifier or argument
- Look of the output produced by /list
- Only call
unget_wch(MY_KEY_RESIZE)
after sleeping for a requested interval. This possibly prevents the program from crashing or the terminal from being hung up due to a "resize attack". - Printtext: replaced unbounded
sw_sprintf
calls withsw_snprintf
textbuffer_size_absolute
now defaults to 1500
- An issue
- ...regarding the maintenance of channel statistics
- ...where the cursor was left at the statusbar (after updating it)
- Visible usage of /list
net_ssl_send
: signed-unsigned mix with relational
- Support for multiple encodings:
- UTF-8
- ISO-8859-1
- ISO-8859-15
- Command /list
- Event
- 321-323 (numeric replies for /list)
- 334. Undocumented. At Undernet, it prints out usage describing parameters for the LIST command.
- 341 (
RPL_INVITING
) - 412 (
ERR_NOTEXTTOSEND
) - 467 (
ERR_KEYSET
) - 471-474
- 481 (
ERR_NOPRIVILEGES
) - 742 (MODE cannot be set due to channel having an active MLOCK restriction policy). ATM not documented in the RFC.
- The default theme. Color codes that consisted of only one digit were
changed to use two digits in some cases. For example: ^C3 changed to
^C03, ^C5 changed to ^C05, etc. Why? Consider a function call like
printtext(..., "%s
one or more digits
", Theme(primary_color
)). If the primary color, in this case, consists of only one digit and is directly followed byone or more digits
the result is: one digit is lost and a random color will be displayed.
- As a fallback, instead of printing out "Printtext Internal Error", continue to convert characters even if some are lost due to an invalid multibyte sequence.
- Interpretation of color codes in the printtext module. For example: ^C123 didn't display '3' before as it should.
- FIRST OFFICIAL VERSION OF SWIRC!