Florent Le Coz
e47b164a43
Send an error presence whenever a user tries to join an invalid room
2014-03-24 21:08:09 +01:00
Florent Le Coz
cdc3183d9e
Introduce two new bool, to know if the xmpp component should try to reconnect
...
If we never succeeded our connection+auth process, means we should probably
not attempt any-more, and just give up. If we ever did, this means a
reconnect is a good idea
2014-03-24 20:39:59 +01:00
Florent Le Coz
ffc820e234
Reconnected immediately to the XMPP whenever it closes the connection
2014-03-24 20:31:02 +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
3b1bf740a3
Fix the CMakeLists.txt regarding ronn
2014-03-14 01:34:35 +01:00
Florent Le Coz
930696e48a
Remove useless cast
2014-03-10 00:12:42 +01:00
Florent Le Coz
601159e8e2
Fix a bus error by not going above an array boundary
2014-03-03 21:02:55 +01:00
Florent Le Coz
db6ea52b44
Provide details about what error the XML parser encountered
2014-02-28 01:18:21 +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
df774d45a9
Use scatter/gather io with sendmsg to avoid concataning strings all the time
2014-02-27 23:43:05 +01:00
Florent Le Coz
e2b9e80244
Fix a wrong comment
2014-02-26 01:15:44 +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
f6029d5bcf
Add missing stdexcept includes
2014-02-24 21:03:51 +01:00
Florent Le Coz
5f82c93754
Use store() instead of operator=() for std::atomic<bool> objects
2014-02-24 21:02:21 +01:00
Florent Le Coz
541af5236e
Consider that the connect() succeded if errno EISCONN
...
Apparently on some systems, subsquent connect() calls may fail with EISCONN
error, to indicate that the connection succeded in the background, instead
of returning 0.
2014-02-22 23:36:03 +01:00
Florent Le Coz
730cc6e1bd
Save the addrinfo values for reuse on subsequent connect() call
2014-02-22 23:35:14 +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
61ca40fa0e
Delete empty bridges objects
2014-02-20 02:31:16 +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
e390b79a12
Do not receive SIGPIPE when send() is called on a closed socket
...
The error is handled using the return value
2014-02-20 00:00:05 +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
aeae88dd32
Move CMake’s config.h(.cmake) files into src/
2014-02-19 02:49:22 +01:00
Florent Le Coz
6804f31546
Set sigaction.sa_flags to 0
2014-02-19 02:38:58 +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
8fd2746696
Reload the conf on SIGUSR1/2
2014-02-19 02:24:00 +01:00
Florent Le Coz
754dd898a7
Fix a typo in Find* comments
2014-02-19 01:48:55 +01:00
Florent Le Coz
293cab0d37
Fix FindIconv cmake module to correctly compile the c++ test code
2014-02-19 01:11:46 +01:00
Florent Le Coz
e43de640e9
Build the man page as part of the build process, if ronn is found
2014-02-17 03:07:27 +01:00
Florent Le Coz
c5b4be0e17
Little man page update
2014-02-17 02:31:14 +01:00
Florent Le Coz
7cfc79179c
Make install rule
2014-02-17 02:12:12 +01:00
Florent Le Coz
6700d5daf2
Fix quit messages not being sent to XMPP
2014-02-17 01:56: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
abcf16bc28
Log (xmpp) stream-level errors
2014-02-17 01:31:19 +01:00
Florent Le Coz
6dbf36b974
Revert "Do not include an empty item XML element in join presences"
...
This reverts commit e3b91475ff .
2014-02-17 01:21:38 +01:00
Florent Le Coz
274859c096
Handle most generic error IRC messages
2014-02-08 08:22:42 +01:00
Florent Le Coz
d46e7ee8c9
Enable TCP keepalive on sockets
2014-02-08 08:14:24 +01:00
Florent Le Coz
eb2a2e75c2
Add missing logger include
2014-02-08 08:14:08 +01:00
Florent Le Coz
e3b91475ff
Do not include an empty item XML element in join presences
2014-02-08 08:04:33 +01:00
Florent Le Coz
da85617428
Use strerror and log_error instead of perrror
2014-02-08 07:59:02 +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
de7b3503a4
Jidprep also handles the resource part
2014-01-28 03:30:12 +01:00
Florent Le Coz
b71547a32b
Fix the build system to correctly include config.h
2014-01-14 21:45:56 +01:00
Florent Le Coz
d1c6d64546
Add missing stdexcept includes
2014-01-13 20:19:10 +01:00
Florent Le Coz
feb77bbdad
Do not change the affiliation/role to "none"/"participant" when changing nick
...
fixes #2436
2014-01-13 20:14:12 +01:00
Florent Le Coz
af2d232059
Little README fixes
2014-01-13 20:11:36 +01:00
Florent Le Coz
48b4f7b83f
Remove cryptopp dependency, directly include a simple sha1 implementation
2014-01-13 20:11:36 +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
7701c90763
Add missing errno.h includes
2014-01-04 02:48:08 +01:00
Florent Le Coz
b513683041
Document the shutdown procedure
2014-01-04 02:04:38 +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
baf03a7e20
Do not throw an exception when recv returns and error, just close the socket
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
df59a09163
Do not mismatch password and hostname in the config error help message
2013-12-24 14:04:12 +01:00
Florent Le Coz
983477084c
connect() returns a boolean
2013-12-24 14:03:40 +01:00
Florent Le Coz
2ecb637f0c
Read a variable number of bytes, 4096 by default
2013-12-23 17:07:43 +01:00
Florent Le Coz
e35472a6cb
Correctly send the part message to IRC
...
By fixing a namespace when looking for an XML element containing that message
2013-12-23 17:02:46 +01:00
Florent Le Coz
7d8ce3b563
Use XML-sanitized strings when serializing stanzas for the XMPP server
2013-12-15 00:34:30 +01:00
Florent Le Coz
3960e4d5af
Functions to provide xml-valid strings
...
By removing invalid chars, see http://www.w3.org/TR/xml/#charsets
2013-12-15 00:34:13 +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
bb094e5058
Document the log_file and log_level configuration options
2013-12-08 20:33:36 +01:00
Florent Le Coz
2aa868c7cc
Document the bare-JID-for-IRC-users feature
2013-12-08 20:28:57 +01:00
Florent Le Coz
8e2dd573bb
Provide the doc in markdown format
...
The included man page is now generated from this markdown file, using ronn
2013-12-08 20:23:35 +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
cb718def0c
Put utils::tolower definition in its own cpp file
2013-12-08 18:02:24 +01:00
Florent Le Coz
fb01f78b0a
Rewrite the FindIconv module cleanly
2013-12-08 15:57:10 +01:00
Florent Le Coz
2c9680bc03
Rewrite the FindCryptopp cmake module cleanly
2013-12-08 15:57:06 +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
050cf1fd60
xml-escape the tail in an XmlNode
2013-12-02 13:15:51 +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
2921f53657
Print some stuff when ./test is running
2013-11-28 01:18:26 +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
3c5cdec1d1
Add some documentation
2013-11-28 01:18:26 +01:00
Florent Le Coz
e6f20d3c0f
Implement IRC format to xhtml-im conversion
...
The generated XML is very verbose because each IRC formatting tag makes us
close a <span/> element and reopen it with the new style applied. However,
this works quite well and is easy to implement.
2013-11-28 01:18:26 +01:00
Florent Le Coz
31e18e49b6
fsanitize=address requires libasan, that’s a useless dependency.
...
Also we cannot use both this feature and valgrind at the same time.
So, I’ll just specify this flag myself when I need it, this doesn’t
need to be there by default
2013-11-28 01:18:21 +01:00
Florent Le Coz
fba01f4646
Remove incomplete implementation of remove_irc_colors
2013-11-27 00:37:23 +01:00
Florent Le Coz
959291afe6
Set the parent of a node passed to add_child, and return it for conveniance
2013-11-27 00:37:23 +01:00
Florent Le Coz
12a18ca748
TIL override and final
2013-11-21 19:38:31 +01:00
Florent Le Coz
bfcc9cdc74
Send XMPP multi-line messages as multiple IRC messages
2013-11-21 00:58:14 +01:00
Florent Le Coz
70a58a8f71
Merge branch 'epolletc'
2013-11-21 00:37:01 +01:00
Florent Le Coz
b72908548d
Let the user choose the poller to use through cmake POLLER option
...
Use ccmake, or cmake -i, or cmake -DPOLLER=EPOLL, for example
2013-11-21 00:35:15 +01:00
Florent Le Coz
b569240a55
Use epoll
2013-11-21 00:35:15 +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
e7a441e798
Add a test for xml escape/unescape
2013-11-16 12:08:32 +01:00
Florent Le Coz
a85e1abaaa
Fix a warning
2013-11-14 23:39:28 +01:00
Florent Le Coz
641166b037
Link with pthread, required by cryptopp
2013-11-14 23:35:58 +01:00