Commit Graph

589 Commits

Author SHA1 Message Date
Kevin Easton
726884b0b0 Ignore DCC ACCEPT if we didn't request a DCC RESUME
Mark DCC connections that we have requested RESUME on, so that we know
whether or not to act on a DCC ACCEPT that is received.

Also fixes up a slightly wrong message in /DCC RESUME.
2015-10-04 00:44:47 +10:00
Kevin Easton
c173af3f65 Remove unused DCC_CNCT_PEND flag and always define DCC_SSL
DCC_CNCT_PEND was only ever set, not tested, so it was pointless.

There's no point only defining DCC_SSL when HAVE_SSL is defined: we can't
re-use that flag bit anyway, so might as well just define it always.

Also fixes a "flags && DCC_WAIT" that should have been "flags & DCC_WAIT".
This has no practical effect though I believe, since as far as I can tell
DCC_WAIT would always be set at that point anyway.
2015-10-03 22:10:15 +10:00
Kevin Easton
857a5fa524 Fix /KB so that it kicks-then-bans as documented
This also fixes a few others - eg /KBI now kicks-then-bans, and
/BKI bans-then-kicks (previously these were the wrong way around).

Reported by profiler.
2015-09-20 21:54:54 +10:00
Kevin Easton
e0bdc609c1 Fix type mismatches and remove unused variables in nap plugin
Should just fix compiler warnings.
2015-09-10 17:00:09 +10:00
Kevin Easton
6d6717e56e Fix type mismatch errors in fserv module
No functional change, this just fixes some compiler warnings.
2015-09-10 16:31:34 +10:00
Kevin Easton
723cb5be9b Remove some set-but-not-used variables in the cavlink module
Cleans up some compiler warnings.
2015-09-10 14:57:00 +10:00
Kevin Easton
c99345f1ce Fix char / unsigned char mismatch in blowfish module
Cleans up a compile warning, no functional change.
2015-09-09 23:14:01 +10:00
Kevin Easton
e54106de83 Add missing Changelog entry for commit [b944573]. 2015-09-09 13:02:33 +10:00
Kevin Easton
aea7050efe Don't create a double stack frame when calling aliases
The old code created a new stack frame in parse_line_alias_special(), then
another one in parse_line().  This prevented $functioncall() from working,
and made the output of CALL look odd.

|Rain| mentioned this years ago in starman.irc.
2015-09-08 23:35:06 +10:00
Kevin Easton
642ab8829d Fix up some type mismatch errors in the arcfour module 2015-09-07 17:12:04 +10:00
Kevin Easton
8cc9684c76 Ensure close_server() clears the who/ison/userhost queues for the right server
close_server() should call clear_server_queues() on the server that's being
closed, not from_server.  This also lets us remove a few other calls to
clear_server_queues() that are right next to calls to close_server().
2015-09-07 16:34:41 +10:00
Kevin Easton
35b1a65f03 Remove obsolete AIM plugin
The servers for the TOC protocol used by this plugin were decomissioned
by AOL in 2012, so it can't be used any longer.
2015-09-06 23:33:36 +10:00
Kevin Easton
9606ab312f Remove now-unused stripansi() function. 2015-09-06 22:54:12 +10:00
Kevin Easton
2520bd32f6 Separate parsing of channel WALLs into a function and clean it up
Channel WALL notices now have to match "[%Wall%/%] *", and have to be for
a channel that the client is actually on.  Otherwise, they just appear as
ordinary NOTICEs.
2015-09-06 22:47:20 +10:00
Kevin Easton
d62914af15 Optimise add_last_type() and change it to accept const char * pointers
The optimisation reduces the number of malloc_strcpy() calls, from 50 to 5
for most last types.
2015-09-03 01:04:12 +10:00
Kevin Easton
c881dd7a9a Change 'from' and 'format' arguments of logmsg() to const char *
This allows callers to pass const char * pointers to them.
2015-09-02 23:39:53 +10:00
Kevin Easton
d1816fdc8b Don't mangle ANSI sequences in NOTICEs.
We pass through ANSI just fine in PRIVMSGs, so we might as well treat
NOTICEs the same way too.  The old code wasn't just stripping them out,
either - it was turning them into printable garbage.
2015-09-01 23:04:01 +10:00
Kevin Easton
75bd647d15 Switch stripansi() to stripansicodes() in the CTCP reply parser.
stripansi() actually just munged control-characters, so it just turned ANSI
codes into visible junk.

stripansicodes() instead leaves control characters alone but removes complete
ANSI sequences from the string.  I'm not sure if even that is necessary,
really - after all, we always allowed ^B, ^C etc style formatting in CTCP
replies.
2015-08-30 22:03:38 +10:00
Kevin Easton
498631e74a Introduce get_kick_reason() and switch all kick commands to use it
get_reason() is then used only for the implementation of get_kick_reason()
and for the $getreason() scripting function.  Add current nick as an
explicit argument for get_reason(), which pushes all use of from_server
out of the ransom reason functions.

Also switch a few instances of send_to_server() to my_send_to_server() where
the current server has been returned by prepare_command().
2015-06-28 00:35:50 +10:00
Kevin Easton
ff251080da Add get_kill_reason() that uses BitchX.kill, and convert all /KILL users to it
Previously only send_kill() used BitchX.kill - the other KILL commands (eg.
/WHOKILL) were using the random kick reasons.  Standardise them all on
BitchX.kill, and add this file to the source so it can be installed along
with the other random reason files.
2015-06-27 23:18:38 +10:00
Kevin Easton
27e32a0319 Cleanup and simplify get_reason() and related functions
Rename randreason() to fread_random() to better reflect its function,
and change it to a one-pass algorithm.  Have it write into a caller-provided
buffer instead of a static buffer.  Fixes a file leak when an empty
file is given to this function.

Change freadln() so that it never returns an empty line - it only returns
0 at end-of-file now.  This simplifies its callers.

Factor out some common code from the several get_reason()-type functions,
which greatly simplifies them.
2015-06-27 00:38:40 +10:00
Kevin Easton
5f4429bf7b Removed unused variable from output_reject_ctcp()
Also remove unnecessary tests for stuff and stuff->user - these are always
non-null when the callback is called.
2015-06-25 11:45:09 +10:00
Kevin Easton
ee0cd23ae5 Rearrange code in bankick() to silence a compiler warning
Re-checking the command name to see if it's a timed ban means that the
compiler can't see that it's the same check.

This also makes sure you can't specify a negative timeout.
2015-06-24 23:38:28 +10:00
Kevin Easton
28bd7a66b6 Remove useless check for !nick from userhostbase callbacks
The userhostbase callback is always called with non-null nick.  Checking for
this is just noise which also sometimes results in odd compiler warnings.
2015-06-24 23:20:53 +10:00
Kevin Easton
05cf540a99 Fix use of uninitialised variable and hostmask matching logic in userhost_unban()
Initialise ip_str so that it isn't used uninitialised.

Don't strip server flags from user@ portion of the hostmask, so that it will
not miss matching bans.

Switch ip_str from alloca() to malloc_sprintf() / new_free() - there's no
particular need for alloca() here.
2015-06-23 15:53:30 +10:00
Kevin Easton
3618f842aa Changelog update for unsigned char / char fixes 2015-06-23 15:50:29 +10:00
Kevin Easton
90f85dec0c Clean up unsigned char / char mismatches in screen.c
Also remove a couple of unused variables in prepare_display()
and create_additional_screen().
2015-06-21 22:50:44 +10:00
Kevin Easton
91d6169cb7 Fix unsigned char / char mismatches in a few remaining places in functions.c
Also slightly clean up function_stripansi(), removing a redundant mask.
2015-06-21 18:01:11 +10:00
Kevin Easton
69bbcfd83d Convert stripansi() from unsigned char to char
This silences a few compiler warnings.

This also cleans the function up by removing some always-true checks.
I'm not convinced that this function makes a whole lot of sense, though.
Will look into it further...
2015-06-21 00:18:03 +10:00
Kevin Easton
b0f0124779 Don't compile convert_output_format2() in non-GUI builds
This function is only used by the GUI menu code, so we don't need to
build it for normal builds.

Also clean up some unsigned char / char mismatches that the compiler warned
about.
2015-06-20 23:42:04 +10:00
Kevin Easton
64860729b3 Convert read_netfinger() to use char instead of unsigned char 2015-06-20 23:18:13 +10:00
Kevin Easton
716a8ec33a Change ar_* resolver functions from char to unsigned char where appropriate
This gets rid of all the unsigned char / char mismatch warnings in these
functions.
2015-06-20 22:36:05 +10:00
Kevin Easton
cce8b30079 Switch write_sockets() and read_sockets() from unsigned char * to char * 2015-06-20 08:43:00 +10:00
Kevin Easton
8649c17912 Change edit_char() from unsigned char to char
This squashes a few more warnings.
2015-06-20 00:03:15 +10:00
Kevin Easton
53f7c374cf Convert strip_ansi() from unsigned char to char
This required a few careful changes to ensure that the result does the same
thing.

Also included a few little cleanups in this function.
2015-06-19 23:12:10 +10:00
Kevin Easton
1b1734d7e1 Fix bxconfigure crash on terminals wider than 200 columns.
A few places created strings based on the terminal width, using fixed-sized
buffers and without checking for overflowing them.  Fix those, and also
replace all other sprintf() calls with snprintf().

Reported by cpet.
2015-06-19 20:42:44 +10:00
Kevin Easton
d0b0a95330 Convert skip_ctl_c_seq() and its callers (except strip_ansi()) from unsigned char to char
This should make no functional difference, and cuts out a large number of
unsigned char * / char * mismatch warnings.
2015-06-17 22:50:49 +10:00
Kevin Easton
563493dd6a Add COLOR_CHAR and BELL_CHAR defines to replace open-coded values 2015-06-16 19:06:30 +10:00
Kevin Easton
aa3dc1939d Remove obsolete Chatnet 310 numeric support (WANT_CHATNET)
Chatnet doesn't use the odd 310 numeric support anymore, it now uses 310 for
the same WHOIS_HELPFUL as Dalnet.  They apparently use a pretty bog-standard
Unreal ircd now.
2015-06-16 13:23:36 +10:00
Kevin Easton
6077322ef8 Check for socket errors when connection is terminated by server
This means that when a connection fails or is closed due to a socket
error, the error is properly bubbled back up to the user.
2015-06-13 23:29:00 +10:00
Kevin Easton
bc94fbe64a Remove a strange old piece of code apparently for detecting a server gone to lunch
This code appears to be some kind of backstop so that the client will notice
a server connection that's died because of a network interruption.  Checking
errno that was last set christ-knows-where is not the right way to do this,
though.

The normal write to the server for the lag check should eventually see the
host/net unreachable error if this happens.
2015-06-13 22:35:03 +10:00
Kevin Easton
b0951d44dd Simplify and make static reconnect_server() function 2015-06-13 22:30:44 +10:00
Kevin Easton
1883e2c0c3 Minor fix to /STACK to make it match /SET behaviour
Previously /STACK would not accept just the initial part of a /SET name
even if it wasn't ambiguous.  Now it uses the same matching behaviour
as /SET.

This also removes an unused variable in do_stack_set().
2015-06-12 16:57:19 +10:00
Kevin Easton
6ba8dc7426 Remove vestigal NOTIFY_BITCHX_COM defines 2015-06-12 16:15:32 +10:00
Kevin Easton
6dbc712046 Rework and improve the scheduling of the server lag check
Previously the server lag check was run by update_clock() if the number of
seconds since client startup was a multiple of 20 (unless it had already been
done this second).  This meant that if update_clock() was not being called
frequently (eg. if your IRC connection was very quiet), it might go a long
time between lag checks.

This commit adds a /set LAG_CHECK_INTERVAL (defaulting to 30).  For each
server, a lag check ping is scheduled for every LAG_CHECK_INTERVAL seconds
after the connection is finalised/registered.  Setting this value to 0
disables the lag check pings entirely.

The old code set the lag to 'unknown' immediately after sending out a ping,
which meant that it was quite unpredictable how long the lag value would
stay around for.  The new code only sets this once the current lag value
has become stale (ie. a ping reply is overdue based on the current lag
value).  If your lag is staying the same or reducing, you shouldn't see
the [Lag ??] at all.
2015-06-12 15:54:43 +10:00
Kevin Easton
7eae2aba86 Change arguments of my_strnstr() from const unsigned char * to const char *
This kills warnings in both ircaux.c and input.c.
2015-06-07 00:30:05 +10:00
Kevin Easton
c0c7cdbdcc Rework the calculation of the select timeout in io() to be based on absolute wake time
An absolute wake time is now calculated and updated by set_server_bits(),
TimerTimeout() and tclTimerTimeout().  This is then used to calculate the actual
select() timeout, instead of having those functions calculate a relative timeout
value themselves.  This significantly simplifies those functions, since the
underlying values tend to be recorded as absolute times.

It also allows us to disentangle tclTimeTimeout from TimerTimeout(), and move the
responsibility for calculating the QUEUE_SENDS wake time from TimerTimeout() to
set_server_bits() where it belongs.

The QUEUE_SENDS and CONNECT_DELAY wake up times will also now be correctly
calculated, based on the last sent time and connect time respectively.
2015-06-07 00:03:09 +10:00
Kevin Easton
6f0f9dd8a8 Add missing Changelog entry for commit [8cdc62a] 2015-06-03 23:34:18 +10:00
Kevin Easton
8cdc62ae0d Wire up /SET DOUBLE_STATUS_LINES so it actually does something
The DOUBLE_STATUS_LINES /SET has existed for a long while, but setting it has
never actually had an effect.  This change causes it to affect the
/window double setting of new windows: 0 means new windows are created without
double status lines, 1 means only the first window is created with double
status lines and subsequent windows aren't (this is the default) and 2 means
that all windows are created with double status lines.

Note that setting this variable in your .ircrc can't actually affect the first
window, because that's created before the .ircrc is loaded.  The compiled-in
default value (DEFAULT_DOUBLE_STATUS_LINES in config.h) is the only thing that
can affect the first window.

Reported by presi.
2015-06-03 23:16:57 +10:00
Kevin Easton
ec842a808f Update COMPILE-PROBLEMS
Remove reference to crashes with clang under FreeBSD, advised by cpet.

Add name of libncurses-devel package for Cygwin.
2015-06-03 22:43:00 +10:00