Commit Graph
210 Commits
Author SHA1 Message Date
Florent Le Coz 5507adbe94 SocketHandlers own the poller and add themself into it only when the socket is created
We want to call socket() with the parameters provided by getaddrinfo, so we
can’t addd the fd into the poller immediately. We need to wait the
connection attempt, and then the SocketHandler can call add_socket_handler
itself, if the connection succeeds, or is in progress.
2014-05-27 01:01:44 +02:00
Florent Le Coz 712b7bdfdf Correctly handle the usage of ! as a IRC user mode indicator
Since “!” is also the separator between the nickname and the user hostname,
having “!” as the user mode (e.g. !nick!~some@host.bla) would cause the nick
to be empty. Now we skip it if it is a valid user mode indicator.
2014-05-14 21:48:38 +02:00
Florent Le Coz 579ca4bdb6 Forward iq version results to IRC 2014-05-07 02:02:47 +02:00
Florent Le Coz 5ec05cb0ed Forward CTCP version request to XMPP 2014-05-06 22:50:37 +02:00
Florent Le Coz f6e6b8905b Use C++14 string_literals 2014-04-29 21:50:13 +02:00
Florent Le Coz c6059e5a21 Upgrade to C++14 2014-04-28 18:46:25 +02:00
Florent Le Coz 77a84fd2d9 NOTICE from channels are displayed in the channel, with a green "[notice]" 2014-04-25 00:35:57 +02:00
Florent Le Coz 3bc6f18347 Add an explanatory topic on the dummy channel 2014-04-15 05:22:32 +02:00
Florent Le Coz 28065d3d52 Do not disconnect from the IRC server if the dummy channel is joined 2014-04-15 05:08:07 +02:00
Florent Le Coz 5739d418e2 Better way to leave the dummy room 2014-04-15 04:56:50 +02:00
Florent Le Coz cfca16bbec Ability to leave the dummy channel 2014-04-15 04:44:51 +02:00
Florent Le Coz 576fb3d132 Correctly use the dummy channel whenever we interract with an empty-string chan 2014-04-15 04:44:09 +02:00
Florent Le Coz 020325dbb0 [WIP] DummyIrcChannel 2014-04-13 15:37:56 +02:00
Florent Le Coz e971f64f92 Catch all exception produced by a received message (irc or xmpp) 2014-03-28 01:47:48 +01:00
Florent Le Coz e196d2f1f4 Do not send data if we are connected, send it only once we actually are 2014-03-24 18:37:31 +01:00
Florent Le Coz 86d4347af8 Avoid unnecessary copies by recv()ing data directly into the expat buffer 2014-02-28 01:14:38 +01:00
Florent Le Coz 76b131e13a Do not try to connect to an irc server if we are connected or connecting 2014-02-25 02:10:45 +01:00
Florent Le Coz 99aba5667d Connection to servers does not block the process anymore 2014-02-22 21:42:24 +01:00
Florent Le Coz 190c4ff176 QUIT the irc server when the last channel is left 2014-02-20 02:19:50 +01:00
Florent Le Coz 16be9af3fc Send unavailable presence to all muc when the IRC server closes the connection 2014-02-19 23:59:43 +01:00
Florent Le Coz 112197f6ab Fix the joined flag on channels, avoid sending the topic twice when joining 2014-02-19 02:38:22 +01:00
Florent Le Coz cf9f3a1f28 Include role and affiliation in the join presence of the nick change process 2014-02-17 01:43:58 +01:00
Florent Le Coz 274859c096 Handle most generic error IRC messages 2014-02-08 08:22:42 +01:00
Florent Le Coz c8b41d5e35 Be verbose about IRC server connection failures, and handle them properly 2014-02-08 07:52:22 +01:00
Florent Le Coz fef9c8193d Also set the role and affiliation of users already in the chan 2014-01-06 01:22:43 +01:00
Florent Le Coz d90c1978de Fix a bug when receiving a topic change
The number of arguments is not always the same
2014-01-04 01:59:36 +01:00
Florent Le Coz fbec16f1a2 Possibility to change a channel's topic 2014-01-04 01:59:36 +01:00
Florent Le Coz e840704b58 Convert received modes into roles and affiliations 2014-01-04 01:59:36 +01:00
Florent Le Coz acf769d83a Use isupport informations to know the user modes when joining
Also remove the duplicate send_self_join methods, user only send_user_join
2014-01-04 01:59:36 +01:00
Florent Le Coz a075517824 Basic isupport support
CHANMODES and PREFIX only
2014-01-04 01:59:36 +01:00
Florent Le Coz 43cc60e4a9 Handle nickname conflicts by sending the correct XMPP error presence 2014-01-04 01:59:35 +01:00
Florent Le Coz e8e592d1ac Remove disconnected IrcClients 2014-01-04 01:59:35 +01:00
Florent Le Coz aa53276859 Keep a "connected" state in the SocketHandler class 2014-01-04 01:59:35 +01:00
Florent Le Coz 483e17020d Be verbose about the connection status, and some errors 2014-01-04 01:59:35 +01:00
Florent Le Coz 9df757fc67 Handle topic changes 2014-01-04 01:59:35 +01:00
Florent Le Coz b8ce9ed43d Check that channels are joined before acting on objects in it 2014-01-04 01:59:34 +01:00
Florent Le Coz 3afb63a650 Shutdown cleanly on SIGINT 2014-01-04 01:59:14 +01:00
Florent Le Coz b29290f73a Lowercase the chan names in two missing cases 2013-12-09 03:53:01 +01:00
Florent Le Coz b11126a19d Provide a JID for IRC users, and add a stringprep dependency for this 2013-12-08 20:14:12 +01:00
Florent Le Coz e2117bcb0a Enforce a simple limit of 400 bytes for IRC messages body
The limit for the whole message is 512 bytes, we limit the body to 400
(instead of doing a calculation based on the command name and the other
parameters), because it's simple, easy and that’s enough.

fixes #2416
2013-12-08 04:47:05 +01:00
Florent Le Coz 6fa548a194 Display all the MODE arguments in the message 2013-12-03 19:56:57 +01:00
Florent Le Coz a4c845ab6c Use the logger everywhere 2013-12-03 19:15:37 +01:00
Florent Le Coz 2662ed89e2 Add a logger class 2013-12-03 19:15:37 +01:00
Florent Le Coz 6bd176f15e Fix a parenthesis ambiguity 2013-12-03 18:49:43 +01:00
Florent Le Coz d6832fbcc9 :3 2013-11-28 21:09:27 +01:00
Florent Le Coz 1151c26c36 Channel names are case insensitive
But some servers (epiknet for example) send channel names with an uppercase
2013-11-28 02:14:42 +01:00
Florent Le Coz 61ecaab400 Re-add support for /me messages from IRC
It was recently removed because it was handled in the old "convert irc
colors" code. It now is in the right place.
2013-11-28 01:18:26 +01:00
Florent Le Coz 12a18ca748 TIL override and final 2013-11-21 19:38:31 +01:00
Florent Le Coz 1e122d3342 Send the motd as one single big message
We append each line to a string, and when the MOTD is
complete, we send that string at once.
2013-11-21 00:35:15 +01:00
Florent Le Coz 0859801230 Handle KICK in irc channel, both ways 2013-11-13 01:24:36 +01:00