Giter Club home page Giter Club logo

irssi's Introduction

Build Status

Irssi is a modular text mode chat client. It comes with IRC support built in, and there are third party ICB, SILC, XMPP (Jabber), PSYC and Quassel protocol modules available.

irssi

Development source installation

Ninja 1.8 and Meson 0.53

git clone https://github.com/irssi/irssi
cd irssi
meson Build
ninja -C Build && sudo ninja -C Build install

Release source installation

  • Download release
  • Verify signature
tar xJf irssi-*.tar.xz
cd irssi-*
meson Build
ninja -C Build && sudo ninja -C Build install

Requirements

See the INSTALL file for details

Please report security issues to [email protected]. Thanks!

Bugs / Suggestions / Contributing

Check the GitHub issues if it is already listed in there; if not, open an issue on GitHub or send a mail to [email protected].

Irssi is always looking for developers. Feel free to submit patches through GitHub pull requests.

You can also contact the Irssi developers in #irssi on irc.libera.chat.

irssi's People

Contributors

ahf avatar ailin-nemui avatar aquanight avatar coekie avatar dajohi avatar dequis avatar dgl avatar dwfreed avatar examknow avatar falconindy avatar geerthauwaerts avatar hansnielsen avatar horgh avatar ihsinme avatar incertia avatar isundil avatar josephbisch avatar kyak avatar l2dy avatar lemonboy avatar mauke avatar mmuman avatar nattynarwhal avatar progval avatar realkindone avatar sebth avatar tomaw avatar trasz avatar vague666 avatar xavierog avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

irssi's Issues

Some glib assertion failure warnings when tab completing

This is probably harmless, but may hint at some wrong behavior. It's been a "known bug" for over 10 years. A few months ago I just walked into #irssi and wasted a few hours debugging this thing and coming up with a simple patch to fix the warnings, so now that the chances to get patches merged are non-zero, I'm posting this.

Relevant IRC logs from 2014-03-19 (may contain inaccurate information as we were figuring it out)

How to reproduce (just one way, there might be others):

  • Be connected to at least one server
  • Have one query window open
  • In the query window, type write any number of spaces followed any number of non-spaces, but no spaces at the end of the message
    • For example _a works (replace _ with space)
  • Move the cursor to the leftmost non-space character (that would be "_|a", underscore being space, pipe being cursor)
  • Press tab
  • Acquire warnings in status window:
01:12 -!- Irssi: critical g_string_erase: assertion 'pos <= string->len' failed
01:12 -!- Irssi: critical g_string_insert: assertion 'pos <= string->len' failed
01:12 -!- Irssi: critical g_string_insert_c: assertion 'pos <= string->len' failed

Sending my patch for this issue separately as a pull request, since as you can see in the logs i linked above, I wasn't completely sure if that was the right way to fix it.

Bracketed paste mode (alternative to time based paste detection)

Some xterm compatible terminal emulators support reporting usage of their 'paste' feature through special control codes. This is more reliable than time based paste detection, which can fail in laggy connections.

Short description in the xfree86 docs: http://www.xfree86.org/current/ctlseqs.html#Bracketed%20Paste%20Mode

Introduction and simple explanation on how to implement it: http://cirw.in/blog/bracketed-paste

Weechat implementation details for reference: http://dev.weechat.org/post/2012/03/10/Bracketed-paste-mode

Weechat initial implementation commit for reference: weechat/weechat@1523946#diff-21 (GPLv3)

Calling die in 'script error' handler causes segfault

/script exec sub fail { Irssi::signal_remove('script error', 'fail'); die; }; Irssi::signal_add('script error', 'fail'); die

#0  0x00000034a934cda1 in __strlen_sse2_pminub () from /lib64/libc.so.6
#1  0x000000000048f65e in perl_script_destroy_package (script=0x5722d0) at perl-core.c:56
#2  perl_script_unload (script=0x5722d0) at perl-core.c:310
#3  0x000000000048f8b3 in sig_script_error (script=0x5722d0, error=<optimized out>) at perl-core.c:431
#4  0x0000000000488bc2 in signal_emit_real (rec=rec@entry=0x551070, params=params@entry=2, va=va@entry=0x7fffffffc818, first_hook=<optimized out>) at signals.c:242
#5  0x0000000000489035 in signal_emit (signal=signal@entry=0x49e1f4 "script error", params=params@entry=2) at signals.c:286
#6  0x000000000048fbb5 in perl_script_eval (script=0x5722d0) at perl-core.c:244
#7  script_load (name=<optimized out>, path=path@entry=0x0, data=<optimized out>) at perl-core.c:278
#8  0x0000000000490163 in perl_script_load_data (data=<optimized out>) at perl-core.c:302
#9  0x00000000004954ad in cmd_script_exec (data=<optimized out>) at perl-fe.c:56
#10 0x0000000000488bc2 in signal_emit_real (rec=rec@entry=0x5a18d0, params=params@entry=3, va=va@entry=0x7fffffffc9f8, first_hook=<optimized out>) at signals.c:242
#11 0x0000000000489035 in signal_emit (signal=signal@entry=0x58c2d0 "command script exec", params=params@entry=3) at signals.c:286
#12 0x0000000000475da8 in command_runsub (cmd=0x49e848 "script", 
    data=0x58f30f "exec sub fail { Irssi::signal_remove('script error', 'fail'); die; }; Irssi::signal_add('script error', 'fail'); die;", server=0x0, item=0x0) at commands.c:329
#13 0x0000000000488bc2 in signal_emit_real (rec=rec@entry=0x576540, params=params@entry=3, va=va@entry=0x7fffffffcba8, first_hook=<optimized out>) at signals.c:242
#14 0x0000000000489035 in signal_emit (signal=signal@entry=0x54a160 "command script", params=params@entry=3) at signals.c:286
#15 0x0000000000475733 in parse_command (item=0x0, server=0x0, expand_aliases=<optimized out>, 
    command=0x58f271 "script exec sub fail { Irssi::signal_remove('script error', 'fail'); die; }; Irssi::signal_add('script error', 'fail'); die;") at commands.c:899
#16 event_command (line=0x58f271 "script exec sub fail { Irssi::signal_remove('script error', 'fail'); die; }; Irssi::signal_add('script error', 'fail'); die;", server=0x0, item=0x0)
    at commands.c:945
#17 0x0000000000488bc2 in signal_emit_real (rec=rec@entry=0x4e1000, params=params@entry=3, va=va@entry=0x7fffffffcd58, first_hook=<optimized out>) at signals.c:242
#18 0x0000000000489035 in signal_emit (signal=signal@entry=0x495bed "send command", params=params@entry=3) at signals.c:286
#19 0x000000000041a123 in key_send_line () at gui-readline.c:439
#20 0x0000000000488bc2 in signal_emit_real (rec=rec@entry=0x540ff0, params=params@entry=3, va=va@entry=0x7fffffffcee8, first_hook=<optimized out>) at signals.c:242
#21 0x0000000000489035 in signal_emit (signal=signal@entry=0x58c2b0 "key send_line", params=params@entry=3) at signals.c:286
#22 0x000000000044b433 in sig_multi (data=<optimized out>, gui_data=0x0) at keyboard.c:639
#23 0x0000000000488bc2 in signal_emit_real (rec=rec@entry=0x50ba00, params=params@entry=3, va=va@entry=0x7fffffffd088, first_hook=<optimized out>) at signals.c:242
#24 0x0000000000489035 in signal_emit (signal=signal@entry=0x58d360 "key multi", params=params@entry=3) at signals.c:286
#25 0x000000000044bd83 in key_emit_signal (keyboard=0x5240a0, key=0x519530, key=0x519530) at keyboard.c:538
#26 key_pressed (keyboard=0x5240a0, key=key@entry=0x7fffffffd1b0 "^J") at keyboard.c:594
#27 0x00000000004198e1 in sig_gui_key_pressed (keyp=0xa) at gui-readline.c:406
#28 0x0000000000488bc2 in signal_emit_real (rec=rec@entry=0x5472d0, params=params@entry=1, va=va@entry=0x7fffffffd268, first_hook=<optimized out>) at signals.c:242
#29 0x0000000000489035 in signal_emit (signal=<optimized out>, params=1) at signals.c:286
#30 0x000000000041ab97 in sig_input () at gui-readline.c:664
#31 0x000000000047c1a0 in irssi_io_invoke (source=<optimized out>, condition=<optimized out>, data=<optimized out>) at misc.c:54
#32 0x00007ffff797aa96 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#33 0x00007ffff797ade8 in g_main_context_iterate.isra.24 () from /usr/lib64/libglib-2.0.so.0
#34 0x00007ffff797ae8c in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#35 0x0000000000429cfc in main (argc=2, argv=0x7fffffffd628) at irssi.c:356

Right-aligned statusbars do not refresh / redraw properly.

This has been an issue in 0.8.15, and I have not seen mention of it in the existing bugs or the fix changelog for 0.8.16.

Example:

/statusbar topic add -alignment right topic
/j #somechannel
/topic long topic of stuff and junk and things
/j #someotherchannel
/topic shorter topic

Then switch between channels and see the longer topic not clear properly, for the short topic.

"/away" sends empty arg to server, should not send any arg at all

I've been using irssi for years w/o any major problems, but my comany recently switched from using an instance of InspIRCd-2.0 to using "slack.com" and with the Slack IRC daemon I discovered a bug in irssi's "/away" handling that most other servers (i also connect to freenode daily) seem to be forgiving of.

As i summarized the situation in a heldesk ticket with slack.com...

Based on your comments, I've done some more testing with my coworkers and
other IRC clients and traced down the problem. It seems that Irssi's
implementation of "/away" (no-args) isn't obeying RFC 2812 precisely.

As you can see in the below log of the data going over the wire (captured
using Irssi's "/rawlog" feature) executing the command "/away" causes irssi
to send the server "AWAY :" -- which is technically an "AWAY" command with
a single argument of "" (empty string). RFC 2812 says it should be sending
no arguments at all.

The correct behavior can be triggered using the irssi command "/quote AWAY"
which is in fact acknowledged by irc.tinyspeck.com and correctly updates my
status in slack. (again, see the log data below)

Here is the "/rawlog" I was refering to...

<< PRIVMSG matthoffman :ok ... here we go...
<< PRIVMSG matthoffman :what is my status?
>> :[email protected] PRIVMSG hoss :online
<< PING irc.tinyspeck.com
>> :irc.tinyspeck.com PONG :irc.tinyspeck.com
--> lag pong
>> PING :irc.tinyspeck.com
<< PONG :irc.tinyspeck.com
<< PRIVMSG matthoffman :about to set myself away using "/away some reason"
<< AWAY :some reason
>> :irc.tinyspeck.com 306 :You have been marked as being away
<< PRIVMSG matthoffman :what is my status?
>> :[email protected] PRIVMSG hoss :away
>> PING :irc.tinyspeck.com
<< PONG :irc.tinyspeck.com
<< PRIVMSG matthoffman :about to unaway using "/away"
<< AWAY :
>> :irc.tinyspeck.com 306 :You have been marked as being away
<< PRIVMSG matthoffman :what is my status?
>> :[email protected] PRIVMSG hoss :still away
>> PING :irc.tinyspeck.com
<< PONG :irc.tinyspeck.com
<< PRIVMSG matthoffman :about to unaway using raw commands: "/quote AWAY"
<< AWAY
>> :irc.tinyspeck.com 305 :You are no longer marked as being away
<< PRIVMSG matthoffman :what is my status?
>> :[email protected] PRIVMSG hoss :online
<< PING irc.tinyspeck.com
>> :irc.tinyspeck.com PONG :irc.tinyspeck.com
--> lag pong
>> PING :irc.tinyspeck.com
<< PONG :irc.tinyspeck.com
<< PRIVMSG matthoffman :thatnks matt!

CHANTYPES support

Irssi appears to only treat channels with a prefix of #, &, + or ! as channels, ignoring CHANTYPES from the 005 numeric. This causes issues with ZNC, as the partyline module uses ~ as channel prefix to avoid name clashes. ZNC sends the correct CHANTYPES, but irssi ignores it.

Here's an example 005 from the server containing CHANTYPES:

21:35:21 freenode --> :wilhelm.freenode.net 005 nyuszika7h CHANTYPES=# EXCEPTS INVEX CHANMODES=eIbq,k,flj,CFLMPQScgimnprstz CHANLIMIT=#:120 PREFIX=(ov)@+ MAXLIST=bqeI:100 MODES=4 NETWORK=freenode KNOCK STATUSMSG=@+ CALLERID=g :are supported by this server

Show git commit in CTCP VERSION.

Currently the CTCP VERSION shows: irssi v0.8.17-head - running on Linux x86_64
I am thinking something like this: irssi v0.8.17-6e68b83 - running on Linux x86_64

The reason behind this suggestion is to easily find out the version of irssi someone is running, if they find some bug or have some issue.

Resizing an irssi window immediately after the terminal is resized causes irssi to crash

This seemingly harmless piece of code:

Irssi::signal_add(
   'terminal resized' => sub {
      Irssi::window_find_name('hilight')->command('window size 5'); 
   }
);

Will crash irssi with the following error upon execution:

*** glibc detected *** irssi: free(): invalid next size (fast): 0x09925f20 ***
======= Backtrace: =========
/lib/i386-linux-gnu/i686/cmov/libc.so.6(+0x70f01)[0xb70d7f01]
/lib/i386-linux-gnu/i686/cmov/libc.so.6(+0x72768)[0xb70d9768]
/lib/i386-linux-gnu/i686/cmov/libc.so.6(cfree+0x6d)[0xb70dc8ad]
/lib/i386-linux-gnu/libglib-2.0.so.0(+0x4f77b)[0xb747777b]
/lib/i386-linux-gnu/i686/cmov/libc.so.6(__libc_start_main+0xe6)[0xb707de46]
irssi[0x805c889]

The solution is to add a delay, like so:

sub fix_winsize {
    Irssi::print( "resized", MSGLEVEL_CLIENTERROR); Irssi::window_find_name('hilight')->command('window size 5');
}

Irssi::signal_add(
    'terminal resized' => sub { Irssi::timeout_add_once(100, 'fix_winsize', ''); }
);

The full script that causes an error:

use strict;
use warnings;
use Irssi;

our $VERSION = "1.4";

our %IRSSI = (
    authors     => "",
    contact     => "",
    name        => "I don't know what I'm doing",
    description => "",
    license     => "",
    url         => "",
    changed     => "",
   );

Irssi::signal_add(
    'terminal resized' => sub { Irssi::window_find_name('hilight')->command('window size 5'); }
);

Bug in the hilight code in combination with ACTIONS and color codes

When you are hilighted in an ACTION and there are color codes before your nickname and there is a comma after your nickname, weird stuff happens: the text is grey after the hilighed part. I don't exactly remember if bold formatting plays a role but I remember that I discussed this issue with someone on IRC and he told me that this is a very ugly bug in the very tricky hilight code :-)

capture

inbuilt splitlong cuts messages too late if connecting through an irssiproxy

084105 < Myrtti> here's the latest example on using it over irssi-proxy, though: I typed a long
sentence that ended "etteivät kerro mulle asias" according to what I saw on this
irssi
084136 < Myrtti> and the others reported that it got cut off at "etteivät ke"
084346 < Myrtti> so there's the hostname that's shown over the network I posted it to, as
murjottava.myrtti.fi, and the one I think irssi somehow internally sees, proxy
084404 < Myrtti> isn't the rawmessage something that includes the hostname, too?
084412 < Myrtti> maybe that's the bit that gets it confused
084443 < Myrtti> so it calculates the length according to hostname 'proxy' when it should use
'murjottava.myrtti.fi'
084447 < Myrtti> that's atleast my theory
084503 < Myrtti> dunno if it makes sense.

[https://gist.github.com/myrtti/6abd70211fd60ca4f175](sanitized rawlog)
[https://gist.github.com/myrtti/e6b981043da8f93edcc5](channel log, la_mettrie on 180046 timestamp reports where it got cut off for people on the channel)

//edit:
211857 < Myrtti> I doublechecked now, the messages are being cut 15 characters too late
211919 < Nei> does that seem to match the diff in actual vs. "proxy" host length?
211947 < Myrtti> myrtti@O-RANMII:$ echo murjottava.myrtti.fi | wc 1 1 21
211947 < Myrtti> myrtti@O-RANMII:
$ echo proxy | wc 1 1 6

Built-in SASL authentication (IRCv3.1)

SASL based authentication is a required extension for IRCv3 compliance (CAP and multi-prefix are required too). This approach solves many of the caveats of methods like "nickserv", and is required in some cases, such as connecting to freenode through tor.

This is currently implemented with third party scripts. I believe it should be a built-in feature (or at the very least, include the script with the default distribution)

Description of the current script based approach: https://freenode.net/sasl/sasl-irssi.shtml

The script itself: https://freenode.net/sasl/cap_sasl.pl

Spec: http://ircv3.org/extensions/sasl-3.1

IRCv3 general information: http://ircv3.org/ (irssi is notably missing from the "Compliant Software" section)

Bug migration

https://github.com/ahf/irssi-old/issues
https://github.com/ahf/irssi-old/issues/8
https://github.com/irssi-import/bugs.irssi.org/issues
http://bugs.debian.org/irssi
http://bugz.fedoraproject.org/irssi

(copied from https://github.com/ahf/irssi-old/issues/8 - added github flavored markdown checkboxes to use as task list)

haspatch:

  • FS#798 - patch Irssi::signal_remove to allow removal of handlers created with coderef callbacks
  • FS#902 - Empty lines in output of "exec" command cause "Not enough parameters given" errors
  • FS#383 - http proxy + ssl crypts CONNECT
  • FS#60 - 2 icb bugs
  • FS#621 - [PATCH] Color support for "gui_entry" to allow better spellcheckers.
  • FS#733 - Please don't translate capital letter in channel name into small letter
  • FS#749 - [patch] make xirssi work with latest SVN
  • FS#781 - write_buffer causes awaylog to miss messages (patch included)
  • FS#827 - missed redraws due to concurrency error
  • FS#893 - problem that recode doesn't affect nicknames and topic, ownnick..
  • FS#275 - /hilight -mask -line nick!@ fails
  • FS#531 - [PATCH] Add signal for paste detection events
  • FS#725 - window move up/down loses windows
  • FS#904 - paste_buffer_join_lines() - wrong use of "paste_buffer" variable
  • http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=637175 perl dcc file size issue

(confirmed still an issue)

  • FS#5 /action #channel doesn't use action_public_channel format
  • FS#124 ", x" in a query triggers assertion failures
  • FS#127 probably many issues with paste_detection
  • FS#377 - away messages failed to show

shouldcheck:

  • FS#156 spaces in dcc filenames (happens in xchat 2.4.4, not in the latest version, can be ignored)
  • FS#331 !channels and layout save (#183)
  • FS#782 FS#816 - Wrong string length calculation for sbar
  • FS#786 - $[num]variable syntax truncates to zero width and worse in nested templates
  • FS#107 - /me action and hilight
  • FS#158 - Padding and length calculation of arguments ($...) is broken
  • FS#464 - server connection msgs go to 2 windows rather than just 1 or many more
  • FS#473 - alternate_nick to null at connect
  • FS#703 - HIlight inside action doesn't end up in awaylog
  • FS#720 - "/ignore -except #channel QUITS" not working as expected
  • FS#579 - Irssi does not fall back to to IPv4 address if IPv6 address is unreacable

github forks:

(thanks @dequis)

socks5 (--with-socks) with dante-1.4.0 - "Network is unreachable" on all non-local addresses

When building irssi (tested 0.8.15 and 0.8.16) with socks5 support (--with-socks) enabled against dante-1.4.0, connections to non-local (subnet/routing-wise) servers fail. Here is sample output:

10:28 [freenode] -!- Irssi: Looking up irc.freenode.net
10:28 [freenode] -!- Irssi: Connecting to irc.freenode.net [78.40.125.4] port 6667
10:28 -!- Irssi: Unable to connect server irc.freenode.net port 6667 [Network is unreachable]

If I try to connect to a server on my local subnet (not relying on a default route / gateway) then it does connect successfully. Building (and running) against dante-1.3.2 works fine too.

I'm confident that this is not a local networking issue, it's been reported by many people on other support venues.

ignore overwrites

I don't know if I'm missing something here (new user), but after ignoring, say, messages that contain 'lol' only like this: /ignore -regexp -pattern "^[lL][oO][lL]$" * PUBLIC, when trying to /ignore * JOINS PARTS QUITS, the two entries get merged without the regexp pattern and I end up ignoring all public messages. If I add the ignore rules in opposite order or edit config manually it seems to work fine.

SSL connection does not timeout

Today my internet provider's upstream misconfigured a router during an upgrade. In short, until they fix it I've needed to set my router's MTU to a lower value.

Incorrect MTU settings have often meant that some connections fail to complete, in my experience this has most often been seen with ssl connections (whether https or irc)

This happenned around 23:10Z and when I reattached my screen around 08:00Z irssi had been attempting to reconnect, but had only tried every couple of hours. As far as I can tell, all of my (re)connect timeouts are set to 5 minutes. Not 2 hours. As per the log below, the connection was listed as (reconnecting) so a /reconnect ALL wouldn't do anything.

After "fixing" the MTU, /disconnect'ing & /reconnect'ing irssi connected fine.
#irssi on freenode suggested < ~dg> Pricey: ah, it's likely the ssl stuff won't have timeouts at that level so here I am...

23:10:40 [freenode] -!- Irssi: No PONG reply from server chat.freenode.net in 301 seconds, disconnecting
23:10:40 -!- Irssi: Connection lost to chat.freenode.net
23:10:41 -!- Irssi: Removed reconnection to server chat.freenode.net port 7000
23:10:41 [freenode] -!- Irssi: Looking up chat.freenode.net
23:11:37 -!- Irssi: Unable to connect server chat.freenode.net port 7000 [Name or service not known]
23:16:37 -!- Irssi: Removed reconnection to server chat.freenode.net port 7000
23:16:37 [freenode] -!- Irssi: Looking up chat.freenode.net
23:17:33 -!- Irssi: Unable to connect server chat.freenode.net port 7000 [Name or service not known]
23:22:33 -!- Irssi: Removed reconnection to server chat.freenode.net port 7000
23:22:33 [freenode] -!- Irssi: Looking up chat.freenode.net
23:22:55 [freenode] -!- Irssi: Reconnecting to chat.freenode.net [2001:708:40:2001:a822:baff:fec4:2428] port 7000 - use /RMRECONNS to abort
Day changed to 19 Aug 2014
01:23:58 -!- Irssi: warning SSL handshake failed: Connection reset by peer
01:23:58 -!- Irssi: Connection lost to chat.freenode.net
01:28:58 -!- Irssi: Removed reconnection to server chat.freenode.net port 7000
01:28:58 [freenode] -!- Irssi: Looking up chat.freenode.net
01:28:58 [freenode] -!- Irssi: Reconnecting to chat.freenode.net [2620:0:861:52:208:80:155:68] port 7000 - use /RMRECONNS to abort
03:29:13 -!- Irssi: warning SSL handshake failed: Connection reset by peer
03:29:13 -!- Irssi: Connection lost to chat.freenode.net
03:34:13 -!- Irssi: Removed reconnection to server chat.freenode.net port 7000
03:34:14 [freenode] -!- Irssi: Looking up chat.freenode.net
03:34:14 [freenode] -!- Irssi: Reconnecting to chat.freenode.net [2001:708:40:2001:a822:baff:fec4:2428] port 7000 - use /RMRECONNS to abort
03:34:54 -!- Irssi: warning SSL handshake failed: server closed connection unexpectedly
03:34:54 -!- Irssi: Connection lost to chat.freenode.net
03:39:54 -!- Irssi: Removed reconnection to server chat.freenode.net port 7000
03:39:54 [freenode] -!- Irssi: Looking up chat.freenode.net
03:39:54 [freenode] -!- Irssi: Reconnecting to chat.freenode.net [2620:0:861:52:208:80:155:68] port 7000 - use /RMRECONNS to abort
05:40:13 -!- Irssi: warning SSL handshake failed: Connection reset by peer
05:40:13 -!- Irssi: Connection lost to chat.freenode.net
05:45:13 -!- Irssi: Removed reconnection to server chat.freenode.net port 7000
05:45:13 [freenode] -!- Irssi: Looking up chat.freenode.net
05:45:13 [freenode] -!- Irssi: Reconnecting to chat.freenode.net [2001:708:40:2001:a822:baff:fec4:2428] port 7000 - use /RMRECONNS to abort
07:45:39 -!- Irssi: warning SSL handshake failed: Connection reset by peer
07:45:39 -!- Irssi: Connection lost to chat.freenode.net
07:50:39 -!- Irssi: Removed reconnection to server chat.freenode.net port 7000
07:50:39 [freenode] -!- Irssi: Looking up chat.freenode.net
07:50:39 [freenode] -!- Irssi: Reconnecting to chat.freenode.net [2a02:2f0c:8000:19:62:231:75:133] port 7000 - use /RMRECONNS to abort
08:11:11 [server]
08:11:11 server_reconnect_time = 5min
08:11:19 [server]
08:11:19 server_reconnect_time = 5min
08:50:26 -!- bitlbee: localhost:6667 (bitlbee)
08:50:26 -!- freenode: chat.freenode.net:7000 (freenode) (connecting...)
09:39:19 [server]
09:39:19 server_connect_timeout = 5min

Hilight Nick CTCP ACTION

It would be nice to have an option to change the color of the nick of a hilighted CTCP ACTION:
* somebody word words hilight words
I would like to be able to change the color of somebody.

Make a 1.0 release

irssi has been around forever, is very stable and has a large user base. There is no reason to keep a version number less than 1.0.

/disconnect should accept the uppercase tags too

I recently issued a connect command to an invalid server:

/connect foo.bar.com

And I read the irrsi docs that said I should find out the tag with:

/server

Which showed me:

RECON-1: foo.bar.com () (04:57 left before reconnecting)

Then the docs said I should disconnect with /disconnect <tag>. I did, and it didn't work:

/disconnect RECON-1

On the other hand this worked:

/disconnect recon-1

As in, the entire problem was in the capitalization of the tag. Wouldn't it make sense if /disconnect accepted the tag in the same capitalization as the output of /server as well?

Access-after-free issues with cached settings

grep result:

chat-completion.c:

completion_char = settings_get_str("completion_char");
cmdchars = settings_get_str("cmdchars");

fe-log.c:

autolog_path = settings_get_str("autolog_path");
log_theme_name = settings_get_str("log_theme");

log.c:

log_timestamp = settings_get_str("log_timestamp");

recode.c:

        to = settings_get_str("recode_out_default_charset");

expandos.c:

timestamp_format = settings_get_str("timestamp_format");

splitlong enabled by default

Would it be possible to get splitlong.pl script to be enabled by default or this functionality to irssi core? It is very common that people aren't using it and someone else needs to tell them that his/her line was not complete.

Stop storing passwords in plaintext

Unfortunately irssi currently stores passwords in plaintext. There are well-known workarounds that have been implemented, however, it would be great to see this functionality built-in into irssi itself.


if you are worried about the password on your disk,
encrypt your home folder.
if you are interested about this question because you would like to put your config in git(hub),
try the git hooks linked in #6 (comment)
you could also use a client certificate, that would move your authentication token to a separate file
if the network supports it

nevertheless it would be nice to improve/fix this issue


Thanks

ssl passphrase support

I am not sure that saving the password in plain text in the irssi config kind of defeats the purpose of the password in first place. openSUSE had a patch that always asked for the passphrase but then would of course block in the reconnect case. not ideal either.

how about asking on the first connect and caching the passphrase in memory?
and maybe give the passphrase dialog a timeout.

sounds better than storing it in plaintext.

sometimes wrong/useless path set for perl_use_lib

And, after much trial and error....its because in 1.70 it switched from List::Util to List::AllUtils and wanting the 'any' method. Which exists in List::Util, providing its new enough....either from using Perl 5.20 or having Scalar-List-Utils installed.

The problem is on systems where the latter is being done.

Scalar-List-Utils installs a List::Util in SITEARCH to override the base version in ARCH. And site_perl paths normally come before the base paths in @inc.

However, with irssi, the configure figures out what the INSTALLARCHLIB path is and promotes that to being searched first. Which causes the older List::Util to get loaded and eventually break things like 'twirssi'. (unable to determine local time zone)

The explanation I gleaned is that its trying to determine where Irssi.pm is going to get installed and making that come first. Problem is that Irssi.pm goes under INSTALLSITEARCH, which by default is first...

While the work around is to use '/set perl_use_lib ...', it might be nice this wasn't needed or required so much hair pulling....

irssi+http_proxy(squid) connection problems

This is the scenario:
10.4.8.204 is the default gateway as well as the proxy server for the entire campus.
10.2.52.57 is the client trying to connect to irc.freenode.net:6667
An instance of squid runs on 10.4.8.204:8080 and accepts all http requests including CONNECT on port 6667.

Scenario1 (No proxy configured in irssi + forward rule on gateway):
When I add the following rule in the default gateway:

iptables -I FORWARD -i eth1 -p tcp -m tcp --dport 6667 -j ACCEPT

irssi works without any problems with the default config file formed after installation.
tcpdump:

[root@proxy ~]# tcpdump host 10.2.57.52 -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
01:32:55.640007 IP 10.2.57.52.65150 > 207.46.114.58.80: Flags [S], seq 804228678, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
01:32:55.640061 IP 10.4.8.204 > 10.2.57.52: ICMP 207.46.114.58 tcp port 80 unreachable, length 60
01:32:56.880198 IP 10.2.57.52.46851 > 37.48.83.75.6667: Flags [S], seq 841079912, win 29200, options [mss 1460,sackOK,TS val 2689580076 ecr 0,nop,wscale 7], length 0
01:32:57.060468 IP 37.48.83.75.6667 > 10.2.57.52.46851: Flags [S.], seq 2861947565, ack 841079913, win 14480, options [mss 1460,sackOK,TS val 2137925891 ecr 2689580076,nop,wscale 6], length 0
01:32:57.060932 IP 10.2.57.52.46851 > 37.48.83.75.6667: Flags [.], ack 1, win 229, options [nop,nop,TS val 2689580257 ecr 2137925891], length 0
01:32:57.060980 IP 10.2.57.52.46851 > 37.48.83.75.6667: Flags [P.], seq 1:12, ack 1, win 229, options [nop,nop,TS val 2689580257 ecr 2137925891], length 11
01:32:57.241443 IP 37.48.83.75.6667 > 10.2.57.52.46851: Flags [.], ack 12, win 227, options [nop,nop,TS val 2137925937 ecr 2689580257], length 0
01:32:57.241454 IP 37.48.83.75.6667 > 10.2.57.52.46851: Flags [P.], seq 1:66, ack 12, win 227, options [nop,nop,TS val 2137925937 ecr 2689580257], length 65
01:32:57.241894 IP 10.2.57.52.46851 > 37.48.83.75.6667: Flags [P.], seq 12:59, ack 1, win 229, options [nop,nop,TS val 2689580438 ecr 2137925937], length 47
01:32:57.241925 IP 10.2.57.52.46851 > 37.48.83.75.6667: Flags [.], ack 66, win 229, options [nop,nop,TS val 2689580438 ecr 2137925937], length 0
01:32:57.422620 IP 37.48.83.75.6667 > 10.2.57.52.46851: Flags [P.], seq 66:186, ack 59, win 227, options [nop,nop,TS val 2137925982 ecr 2689580438], length 120
01:32:57.422946 IP 10.2.57.52.46851 > 37.48.83.75.6667: Flags [.], ack 186, win 229, options [nop,nop,TS val 2689580619 ecr 2137925982], length 0
01:32:58.639859 IP 10.2.57.52.65150 > 207.46.114.58.80: Flags [S], seq 804228678, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
01:32:58.639882 IP 10.4.8.204 > 10.2.57.52: ICMP 207.46.114.58 tcp port 80 unreachable, length 60
01:33:04.655205 IP 10.2.57.52.65150 > 207.46.114.58.80: Flags [S], seq 804228678, win 8192, options [mss 1460,nop,nop,sackOK], length 0
01:33:04.655229 IP 10.4.8.204 > 10.2.57.52: ICMP 207.46.114.58 tcp port 80 unreachable, length 56
01:33:06.882473 IP 37.48.83.75.6667 > 10.2.57.52.46851: Flags [P.], seq 186:241, ack 59, win 227, options [nop,nop,TS val 2137928346 ecr 2689580619], length 55
01:33:06.882798 IP 10.2.57.52.46851 > 37.48.83.75.6667: Flags [.], ack 241, win 229, options [nop,nop,TS val 2689590079 ecr 2137928346], length 0
01:33:06.882978 IP 37.48.83.75.6667 > 10.2.57.52.46851: Flags [.], seq 241:1689, ack 59, win 227, options [nop,nop,TS val 2137928346 ecr 2689580619], length 1448
01:33:06.882986 IP 37.48.83.75.6667 > 10.2.57.52.46851: Flags [.], seq 1689:3137, ack 59, win 227, options [nop,nop,TS val 2137928346 ecr 2689580619], length 1448
01:33:06.883348 IP 37.48.83.75.6667 > 10.2.57.52.46851: Flags [.], seq 3137:4585, ack 59, win 227, options [nop,nop,TS val 2137928346 ecr 2689580619], length 1448
01:33:06.883519 IP 10.2.57.52.46851 > 37.48.83.75.6667: Flags [.], ack 1689, win 251, options [nop,nop,TS val 2689590080 ecr 2137928346], length 0
01:33:06.883601 IP 10.2.57.52.46851 > 37.48.83.75.6667: Flags [.], ack 3137, win 274, options [nop,nop,TS val 2689590080 ecr 2137928346], length 0
01:33:06.883725 IP 10.2.57.52.46851 > 37.48.83.75.6667: Flags [P.], seq 59:73, ack 3137, win 274, options [nop,nop,TS val 2689590080 ecr 2137928346], length 14
01:33:06.923296 IP 10.2.57.52.46851 > 37.48.83.75.6667: Flags [.], ack 4585, win 296, options [nop,nop,TS val 2689590120 ecr 2137928346], length 0
01:33:07.063449 IP 37.48.83.75.6667 > 10.2.57.52.46851: Flags [P.], seq 4585:5810, ack 59, win 227, options [nop,nop,TS val 2137928392 ecr 2689590079], length 1225
01:33:07.064127 IP 10.2.57.52.46851 > 37.48.83.75.6667: Flags [.], ack 5810, win 319, options [nop,nop,TS val 2689590260 ecr 2137928392], length 0
01:33:07.100864 IP 37.48.83.75.6667 > 10.2.57.52.46851: Flags [.], ack 73, win 227, options [nop,nop,TS val 2137928402 ecr 2689590080], length 0

What I see in irssi:

02:11 -!- Irssi: Looking up irc.freenode.net
02:11 -!- Irssi: Connecting to irc.freenode.net [192.186.157.43] port 6667
02:11 -!- Irssi: Connection to irc.freenode.net established
02:11 !tepper.freenode.net *** Looking up your hostname...
02:11 !tepper.freenode.net *** Checking Ident
02:11 !tepper.freenode.net *** Couldn't look up your hostname
02:12 !tepper.freenode.net *** No Ident response
02:12 -!- Welcome to the freenode Internet Relay Chat Network wani
...
...

Scenario2: (http-proxy configured in irssi and no forward rule on gateway):

iptables -D FORWARD -i eth1 -p tcp -m tcp --dport 6667 -j ACCEPT
settings = {
  core = { 
    real_name = "Nehal J Wani";
    user_name = "wani";
    nick = "wani";
    use_proxy = "yes";
    proxy_address = "$fqdn-of-proxy";
    proxy_port = "8080";
    proxy_string = "CONNECT %s:%d HTTP/1.0\012\012";
  };
  "fe-text" = { actlist_sort = "refnum"; };
};

tcpdump:

[root@proxy ~]# tcpdump host 10.2.57.52 -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
01:33:37.686295 IP 10.2.57.52.65152 > 65.55.138.112.80: Flags [S], seq 818253075, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
01:33:37.686345 IP 10.4.8.204 > 10.2.57.52: ICMP 65.55.138.112 tcp port 80 unreachable, length 60
01:33:39.263946 IP 10.2.57.52.44937 > 10.4.8.204.8080: Flags [S], seq 3880370720, win 29200, options [mss 1460,sackOK,TS val 2689622461 ecr 0,nop,wscale 7], length 0
01:33:39.263968 IP 10.4.8.204.8080 > 10.2.57.52.44937: Flags [S.], seq 2981001349, ack 3880370721, win 14480, options [mss 1460,sackOK,TS val 2309737563 ecr 2689622461,nop,wscale 8], length 0
01:33:39.264208 IP 10.2.57.52.44937 > 10.4.8.204.8080: Flags [.], ack 1, win 229, options [nop,nop,TS val 2689622461 ecr 2309737563], length 0
01:33:39.264265 IP 10.2.57.52.44937 > 10.4.8.204.8080: Flags [P.], seq 1:43, ack 1, win 229, options [nop,nop,TS val 2689622461 ecr 2309737563], length 42
01:33:39.264276 IP 10.4.8.204.8080 > 10.2.57.52.44937: Flags [.], ack 43, win 57, options [nop,nop,TS val 2309737564 ecr 2689622461], length 0
01:33:39.264543 IP 10.2.57.52.44937 > 10.4.8.204.8080: Flags [P.], seq 43:103, ack 1, win 229, options [nop,nop,TS val 2689622461 ecr 2309737564], length 60
01:33:39.264554 IP 10.4.8.204.8080 > 10.2.57.52.44937: Flags [.], ack 103, win 57, options [nop,nop,TS val 2309737564 ecr 2689622461], length 0
01:33:39.553152 IP 10.4.8.204.8080 > 10.2.57.52.44937: Flags [P.], seq 1:40, ack 103, win 57, options [nop,nop,TS val 2309737853 ecr 2689622461], length 39
01:33:39.553598 IP 10.2.57.52.44937 > 10.4.8.204.8080: Flags [.], ack 40, win 229, options [nop,nop,TS val 2689622750 ecr 2309737853], length 0
01:33:39.743065 IP 10.4.8.204.8080 > 10.2.57.52.44937: Flags [P.], seq 40:103, ack 103, win 57, options [nop,nop,TS val 2309738043 ecr 2689622750], length 63
01:33:39.743912 IP 10.2.57.52.44937 > 10.4.8.204.8080: Flags [.], ack 103, win 229, options [nop,nop,TS val 2689622940 ecr 2309738043], length 0
01:33:39.921904 IP 10.4.8.204.8080 > 10.2.57.52.44937: Flags [P.], seq 103:219, ack 103, win 57, options [nop,nop,TS val 2309738221 ecr 2689622940], length 116
01:33:39.923755 IP 10.2.57.52.44937 > 10.4.8.204.8080: Flags [.], ack 219, win 229, options [nop,nop,TS val 2689623120 ecr 2309738221], length 0
01:33:40.701559 IP 10.2.57.52.65152 > 65.55.138.112.80: Flags [S], seq 818253075, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
01:33:40.701580 IP 10.4.8.204 > 10.2.57.52: ICMP 65.55.138.112 tcp port 80 unreachable, length 60
01:33:46.701578 IP 10.2.57.52.65152 > 65.55.138.112.80: Flags [S], seq 818253075, win 8192, options [mss 1460,nop,nop,sackOK], length 0
01:33:46.701602 IP 10.4.8.204 > 10.2.57.52: ICMP 65.55.138.112 tcp port 80 unreachable, length 56
01:33:47.792358 IP 10.4.8.204.8080 > 10.2.57.52.44937: Flags [P.], seq 219:272, ack 103, win 57, options [nop,nop,TS val 2309746092 ecr 2689623120], length 53
01:33:47.792897 IP 10.2.57.52.44937 > 10.4.8.204.8080: Flags [.], ack 272, win 229, options [nop,nop,TS val 2689630990 ecr 2309746092], length 0
01:33:58.717174 IP 10.2.57.52.65153 > 134.170.165.249.80: Flags [S], seq 2452128696, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
01:33:58.717198 IP 10.4.8.204 > 10.2.57.52: ICMP 134.170.165.249 tcp port 80 unreachable, length 60
01:34:01.717214 IP 10.2.57.52.65153 > 134.170.165.249.80: Flags [S], seq 2452128696, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
01:34:01.717255 IP 10.4.8.204 > 10.2.57.52: ICMP 134.170.165.249 tcp port 80 unreachable, length 60
01:34:07.732622 IP 10.2.57.52.65153 > 134.170.165.249.80: Flags [S], seq 2452128696, win 8192, options [mss 1460,nop,nop,sackOK], length 0
01:34:07.732670 IP 10.4.8.204 > 10.2.57.52: ICMP 134.170.165.249 tcp port 80 unreachable, length 56
01:34:17.198834 IP 10.4.8.204.8080 > 10.2.57.52.44937: Flags [P.], seq 272:327, ack 103, win 57, options [nop,nop,TS val 2309775498 ecr 2689630990], length 55
01:34:17.201542 IP 10.2.57.52.44937 > 10.4.8.204.8080: Flags [.], ack 327, win 229, options [nop,nop,TS val 2689660398 ecr 2309775498], length 0
01:34:17.293026 IP 10.4.8.204.8080 > 10.2.57.52.44937: Flags [F.], seq 327, ack 103, win 57, options [nop,nop,TS val 2309775593 ecr 2689660398], length 0
01:34:17.293615 IP 10.2.57.52.44937 > 10.4.8.204.8080: Flags [F.], seq 103, ack 328, win 229, options [nop,nop,TS val 2689660491 ecr 2309775593], length 0
01:34:17.293630 IP 10.4.8.204.8080 > 10.2.57.52.44937: Flags [.], ack 104, win 57, options [nop,nop,TS val 2309775593 ecr 2689660491], length 0
01:34:19.736239 IP 10.2.57.52.65154 > 65.55.138.114.80: Flags [S], seq 2145044182, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
01:34:19.736287 IP 10.4.8.204 > 10.2.57.52: ICMP 65.55.138.114 tcp port 80 unreachable, length 60
01:34:22.747974 IP 10.2.57.52.65154 > 65.55.138.114.80: Flags [S], seq 2145044182, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
01:34:22.748008 IP 10.4.8.204 > 10.2.57.52: ICMP 65.55.138.114 tcp port 80 unreachable, length 60
01:34:28.747834 IP 10.2.57.52.65154 > 65.55.138.114.80: Flags [S], seq 2145044182, win 8192, options [mss 1460,nop,nop,sackOK], length 0
01:34:28.747886 IP 10.4.8.204 > 10.2.57.52: ICMP 65.55.138.114 tcp port 80 unreachable, length 56
01:34:40.747990 IP 10.2.57.52.65155 > 134.170.165.251.80: Flags [S], seq 2417415789, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
01:34:40.748039 IP 10.4.8.204 > 10.2.57.52: ICMP 134.170.165.251 tcp port 80 unreachable, length 60
01:34:43.747732 IP 10.2.57.52.65155 > 134.170.165.251.80: Flags [S], seq 2417415789, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
01:34:43.747781 IP 10.4.8.204 > 10.2.57.52: ICMP 134.170.165.251 tcp port 80 unreachable, length 60
01:34:49.763210 IP 10.2.57.52.65155 > 134.170.165.251.80: Flags [S], seq 2417415789, win 8192, options [mss 1460,nop,nop,sackOK], length 0
01:34:49.763265 IP 10.4.8.204 > 10.2.57.52: ICMP 134.170.165.251 tcp port 80 unreachable, length 56

What I see in irssi:

02:16 -!- Irssi: Looking up irc.freenode.net
02:16 -!- Irssi: Connecting to irc.freenode.net [10.4.8.204] port 6667
02:16 -!- Irssi: Connection to irc.freenode.net established
02:16 -!- HTTP/1.0 200 Connection established
02:16 !sinisalo.freenode.net *** Looking up your hostname...
02:16 !sinisalo.freenode.net *** Checking Ident
02:16 !sinisalo.freenode.net *** Couldn't look up your hostname
02:16 !sinisalo.freenode.net *** No Ident response
02:17 -!- ERROR Closing Link: 127.0.0.1 (Connection timed out)
02:17 -!- Irssi: Connection lost to irc.freenode.net

My conclusion:
With proxy settings set, irssi sends CONNECT requests to irc servers via proxy, but the SYN requests to port 80 are not being send through proxy. Hence the connection fails.

When I removed all proxy settings and used proxychains, there was no problem. So, I guess, there is no issue with squid or my network configuration. But there is some issue with irssi. Hence I am opening this issue.

With proxychains, the tcpdump says:

[root@proxy ~]# tcpdump host 10.2.57.52 -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
02:14:11.138457 IP 10.2.57.52.65287 > 65.55.138.112.80: Flags [S], seq 4152375060, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
02:14:11.138515 IP 10.4.8.204 > 10.2.57.52: ICMP 65.55.138.112 tcp port 80 unreachable, length 60
02:14:14.138335 IP 10.2.57.52.65287 > 65.55.138.112.80: Flags [S], seq 4152375060, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
02:14:14.138362 IP 10.4.8.204 > 10.2.57.52: ICMP 65.55.138.112 tcp port 80 unreachable, length 60
02:14:20.138525 IP 10.2.57.52.65287 > 65.55.138.112.80: Flags [S], seq 4152375060, win 8192, options [mss 1460,nop,nop,sackOK], length 0
02:14:20.138548 IP 10.4.8.204 > 10.2.57.52: ICMP 65.55.138.112 tcp port 80 unreachable, length 56
02:14:32.153940 IP 10.2.57.52.65288 > 207.46.114.58.80: Flags [S], seq 1844392939, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
02:14:32.153959 IP 10.4.8.204 > 10.2.57.52: ICMP 207.46.114.58 tcp port 80 unreachable, length 60
02:14:35.169055 IP 10.2.57.52.65288 > 207.46.114.58.80: Flags [S], seq 1844392939, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
02:14:35.169075 IP 10.4.8.204 > 10.2.57.52: ICMP 207.46.114.58 tcp port 80 unreachable, length 60
02:14:39.768902 IP 10.2.57.52.44951 > 10.4.8.204.8080: Flags [S], seq 983454117, win 29200, options [mss 1460,sackOK,TS val 2692082998 ecr 0,nop,wscale 7], length 0
02:14:39.768922 IP 10.4.8.204.8080 > 10.2.57.52.44951: Flags [S.], seq 4227999916, ack 983454118, win 14480, options [mss 1460,sackOK,TS val 2312198068 ecr 2692082998,nop,wscale 8], length 0
02:14:39.769280 IP 10.2.57.52.44951 > 10.4.8.204.8080: Flags [.], ack 1, win 229, options [nop,nop,TS val 2692082998 ecr 2312198068], length 0
02:14:39.769437 IP 10.2.57.52.44951 > 10.4.8.204.8080: Flags [P.], seq 1:40, ack 1, win 229, options [nop,nop,TS val 2692082999 ecr 2312198068], length 39
02:14:39.769447 IP 10.4.8.204.8080 > 10.2.57.52.44951: Flags [.], ack 40, win 57, options [nop,nop,TS val 2312198069 ecr 2692082999], length 0
02:14:40.008692 IP 10.4.8.204.8080 > 10.2.57.52.44951: Flags [P.], seq 1:40, ack 40, win 57, options [nop,nop,TS val 2312198308 ecr 2692082999], length 39
02:14:40.010237 IP 10.2.57.52.44951 > 10.4.8.204.8080: Flags [.], ack 40, win 229, options [nop,nop,TS val 2692083239 ecr 2312198308], length 0
02:14:40.010402 IP 10.2.57.52.44951 > 10.4.8.204.8080: Flags [P.], seq 40:51, ack 40, win 229, options [nop,nop,TS val 2692083240 ecr 2312198308], length 11
02:14:40.010410 IP 10.4.8.204.8080 > 10.2.57.52.44951: Flags [.], ack 51, win 57, options [nop,nop,TS val 2312198310 ecr 2692083240], length 0
02:14:40.010864 IP 10.2.57.52.44951 > 10.4.8.204.8080: Flags [P.], seq 51:98, ack 40, win 229, options [nop,nop,TS val 2692083240 ecr 2312198310], length 47
02:14:40.010873 IP 10.4.8.204.8080 > 10.2.57.52.44951: Flags [.], ack 98, win 57, options [nop,nop,TS val 2312198310 ecr 2692083240], length 0
02:14:40.195729 IP 10.4.8.204.8080 > 10.2.57.52.44951: Flags [P.], seq 40:106, ack 98, win 57, options [nop,nop,TS val 2312198495 ecr 2692083240], length 66
02:14:40.236324 IP 10.2.57.52.44951 > 10.4.8.204.8080: Flags [.], ack 106, win 229, options [nop,nop,TS val 2692083466 ecr 2312198495], length 0
02:14:40.413858 IP 10.4.8.204.8080 > 10.2.57.52.44951: Flags [P.], seq 106:159, ack 98, win 57, options [nop,nop,TS val 2312198713 ecr 2692083466], length 53
02:14:40.414258 IP 10.2.57.52.44951 > 10.4.8.204.8080: Flags [.], ack 159, win 229, options [nop,nop,TS val 2692083643 ecr 2312198713], length 0
02:14:41.169120 IP 10.2.57.52.65288 > 207.46.114.58.80: Flags [S], seq 1844392939, win 8192, options [mss 1460,nop,nop,sackOK], length 0
02:14:41.169161 IP 10.4.8.204 > 10.2.57.52: ICMP 207.46.114.58 tcp port 80 unreachable, length 56
02:14:41.360161 IP 10.4.8.204.8080 > 10.2.57.52.44951: Flags [P.], seq 159:228, ack 98, win 57, options [nop,nop,TS val 2312199660 ecr 2692083643], length 69
02:14:41.360873 IP 10.2.57.52.44951 > 10.4.8.204.8080: Flags [.], ack 228, win 229, options [nop,nop,TS val 2692084590 ecr 2312199660], length 0
02:14:46.266424 IP 10.4.8.204.8080 > 10.2.57.52.44951: Flags [.], seq 228:3124, ack 98, win 57, options [nop,nop,TS val 2312204566 ecr 2692084590], length 2896
02:14:46.266441 IP 10.4.8.204.8080 > 10.2.57.52.44951: Flags [.], seq 3124:6020, ack 98, win 57, options [nop,nop,TS val 2312204566 ecr 2692084590], length 2896
02:14:46.266586 IP 10.4.8.204.8080 > 10.2.57.52.44951: Flags [P.], seq 6020:6076, ack 98, win 57, options [nop,nop,TS val 2312204566 ecr 2692084590], length 56
02:14:46.267066 IP 10.2.57.52.44951 > 10.4.8.204.8080: Flags [.], ack 1676, win 251, options [nop,nop,TS val 2692089496 ecr 2312204566], length 0
02:14:46.267080 IP 10.2.57.52.44951 > 10.4.8.204.8080: Flags [.], ack 3124, win 274, options [nop,nop,TS val 2692089496 ecr 2312204566], length 0
02:14:46.267160 IP 10.2.57.52.44951 > 10.4.8.204.8080: Flags [.], ack 4572, win 296, options [nop,nop,TS val 2692089497 ecr 2312204566], length 0
02:14:46.267308 IP 10.2.57.52.44951 > 10.4.8.204.8080: Flags [.], ack 6076, win 320, options [nop,nop,TS val 2692089497 ecr 2312204566], length 0
02:14:46.267322 IP 10.2.57.52.44951 > 10.4.8.204.8080: Flags [P.], seq 98:112, ack 6076, win 320, options [nop,nop,TS val 2692089497 ecr 2312204566], length 14
02:14:46.267329 IP 10.4.8.204.8080 > 10.2.57.52.44951: Flags [.], ack 112, win 57, options [nop,nop,TS val 2312204567 ecr 2692089497], length 0
02:14:46.451040 IP 10.4.8.204.8080 > 10.2.57.52.44951: Flags [P.], seq 6076:6738, ack 112, win 57, options [nop,nop,TS val 2312204751 ecr 2692089497], length 662
02:14:46.491259 IP 10.2.57.52.44951 > 10.4.8.204.8080: Flags [.], ack 6738, win 343, options [nop,nop,TS val 2692089721 ecr 2312204751], length 0
02:14:49.376751 IP 10.2.57.52.44951 > 10.4.8.204.8080: Flags [P.], seq 112:140, ack 6738, win 343, options [nop,nop,TS val 2692092606 ecr 2312204751], length 28
02:14:49.376767 IP 10.4.8.204.8080 > 10.2.57.52.44951: Flags [.], ack 140, win 57, options [nop,nop,TS val 2312207676 ecr 2692092606], length 0
02:14:51.508543 IP 10.4.8.204.8080 > 10.2.57.52.44951: Flags [P.], seq 6738:6812, ack 140, win 57, options [nop,nop,TS val 2312209808 ecr 2692092606], length 74
02:14:51.508904 IP 10.2.57.52.44951 > 10.4.8.204.8080: Flags [.], ack 6812, win 343, options [nop,nop,TS val 2692094738 ecr 2312209808], length 0
02:14:53.169290 IP 10.2.57.52.65289 > 134.170.165.248.80: Flags [S], seq 2850542057, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
02:14:53.169316 IP 10.4.8.204 > 10.2.57.52: ICMP 134.170.165.248 tcp port 80 unreachable, length 60
02:14:56.168784 IP 10.2.57.52.65289 > 134.170.165.248.80: Flags [S], seq 2850542057, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
02:14:56.168805 IP 10.4.8.204 > 10.2.57.52: ICMP 134.170.165.248 tcp port 80 unreachable, length 60
02:15:02.168813 IP 10.2.57.52.65289 > 134.170.165.248.80: Flags [S], seq 2850542057, win 8192, options [mss 1460,nop,nop,sackOK], length 0
02:15:02.168841 IP 10.4.8.204 > 10.2.57.52: ICMP 134.170.165.248 tcp port 80 unreachable, length 56

What I see in irssi:

02:21 -!- Irssi: Looking up irc.freenode.net
02:21 -!- Irssi: Connecting to irc.freenode.net [91.217.189.42] port 6667
02:21 -!- Irssi: Connection to irc.freenode.net established
02:21 !sinisalo.freenode.net *** Looking up your hostname...
02:21 !sinisalo.freenode.net *** Checking Ident
02:21 !sinisalo.freenode.net *** Couldn't look up your hostname
02:21 !sinisalo.freenode.net *** No Ident response
02:21 -!- Welcome to the freenode Internet Relay Chat Network wani
...
...

Mac OS X's default toolchain hates us

Everyone seems to be having issues with the default configuration for OS X.

Everything seems to work using Homebrew though, so clearly we need to figure out what's going on.

url open error

when I have an irssi session open in terminator and someone posts a url, if the url is clipped, the clipped url will be opened on right-click/open link, not the full url.

Help for UNQUERY is wrong

/HELP UNQUERY states:

15:37:40 Syntax:
15:37:40
15:37:40 UNNOTIFY <mask>

Which belongs to another command.

Show when users reconnect

When using /msg <username> there's something that drives me nuts;

15:00 >>>> MyBestFriendFoo ([email protected]) has quit [Quit: Leaving.] 

But when they reconnect, there's no message to tell me they're back! While it may not be a part of the IRC protocol (I am ignorant to the inner workings) it would be really nice if the client pinged users in /msg mode to see if they come back online. What I would love is;

15:00 >>>> MyBestFriendFoo ([email protected]) has quit [Quit: Leaving.] 
15:02 >>>> MyBestFriendFoo ([email protected]) has reconnected

Ubuntu 12.04 - irssi 0.8.15 (20100403 1617)
Arch Linux 64 - irssi 0.8.16 (20140111 1953)

weird, misplaced, misdocumented scripting API functions

some observations, I ask if they should be deprecated or corrected

  • query_create is a static method in Irssi::Irc::Server::query_create
    • it is documented as Irssi::query_create
    • the docs say it takes an initial type ("IRC") argument
    • Maybe should be moved to Irssi::Irc::query_create?
    • or to Irssi::query_create with the fourth argument implemented?
  • redirect_register is similar
    • move to Irssi::Irc? (Python moved it to server_redirect_register, not sure if happier with that)
  • Irssi::UI::Window::item_destroy and Irssi::UI::Window::item_remove are static methods. ??? (There is also Irssi::Windowitem class)
  • Irssi::Ignore::add_rec and update_rec can't work like that
  • the static Irssi::Irc::dcc* functions look confusing...

irssi-git copy outside of git won't compile

Makefile will generate irssi-version.h using the irssi-version.sh script, which will fail if outside git and result in empty #defines. Then, the build will break due to syntax errors. Should probably limit generation irssi-version.h to git

Implement recode for everything, not only messages

Currently recode only works for messages. It should be implemented so it can affect other things, such as channel names or hostnames.

Two examples, both of them on a network whose encoding is not utf8:

  • If you try to join #ç, two windows will open: one with a title of #ç, supposedly in utf8 and completely empty, and then another one, with #? as window title, which will be the real channel. Irssi will say -!- You have joined #? and all occurrences to the channel's name will have a ? instead of ç.
  • If someone with a hostmask with ç in it joins/parts/whatever, it'll be replaced by ?.

hilight-text improperly restores previous color

The hilight algorithm inserts color control codes to turn the desired text into the hilight color. Unfortunately, in retrieving what it thinks is the previous color control code, it ignores several codes (such as ^o (15) which resets colors, similar to the control sequence ^dg which is properly handled). Thus, when in the presence of another script or a specially-formatted message (eg. from a bot that reports commits to a repo, giving different colors for username, branch, message, etc), it restores the previously used color.

ie.

^c5color^o plain Zannick should be plain
becomes
^c5color^o plain ^c8Zannick^c5 should be plain
where "should be plain" is colored red

Examples (where a script colors other users' nicks and irssi hilights mine): http://imgur.com/MdgxbMX,0SN8TuO

A simplistic way to fix this for ^o would be to expand the else case in strip_real_length (which is where irssi finds the last color control code) to something like

if (IS_COLOR_CODE(*str)) {
  *last_color_pos = (int)(str-start);
  *last_color_len = 1;
} else {
  [previous stuff...]
}

though this will still be wrong in the general case, since some of the control characters (eg. ^b ^f ^g ^v ^7) are toggles (and they do not remove the color from the hilight, either).

I'd suggest something more complicated where the toggles are tracked, and then hilight-text adds a ^o followed by the appropriate control characters:
^bbold Zannick still bold -> ^bbold ^c8Zannick^o^b still bold

(On the other hand, I fixed this for myself simply by adding a case to handle specifically ^o.)

Underscore nicks

03:07 <@_> so can one of you echo the following
03:07 <@_> _
03:07 <@_> __
03:07 <@_>  _
03:07 <@_>  __
03:07 <@_`> _ *
03:07 <@_`> __ *
03:07 <@_> ___
03:07 <@_`>  _
03:07 <@_> a _
03:07 <@_`>  __
03:07 <@_`> ___ *
03:07 <@_> b _
03:07 <@_`> a _
03:07 <@_`> b _
03:07 <@_> a _ b
03:07 <@_> a __ b
03:07 <@_`> a _ b
03:07 <@_`> a __ b

The lines marked with asterisks were hilighted for the user w/ the nick _.

I think the correct behavior is to highlight a line beginning w/ "_ ", ending w/ " _", or including " _ ".

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.