aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeLines
...
* purple: Fix certificate cache dir after changing user dirdequis2015-10-25-0/+6
| | | | | | | | | | | | | | | | This fixes the issue with getting asked to accept certificates that are perfectly valid, every time. The directory is normally created by x509_tls_peers_init(), a few calls below purple_core_init(), which is at module initialization time, way before we have an irc username to fix the user directory. So it creates the wrong directory first, and now we have to fix it manually. And apparently not being able to save cached certificates somehow means they aren't trusted. For some reason. < krisfremen> "for some reason" < dx> idklol
* Update 'help set show_users' to mention special and the new defaultdequis2015-10-25-4/+5
| | | | It was added a while ago.
* check_jabber_util: adapt to new behavior of GET_BUDDY_EXACTdequis2015-10-22-1/+1
| | | | | | | I can't believe the tests did something! Returning the bare jabber_buddy when asking for GET_BUDDY_EXACT is now acceptable, since the google talk typing commit.
* socks4a proxy support (like socks4 with remote DNS)dequis2015-10-21-7/+35
| | | | | | | | | Fixes trac ticket 995 https://bugs.bitlbee.org/bitlbee/ticket/995 This is slightly pointless for the suggested use case (tor), since with socks5 we already send a hostname instead of an IP address. Either way, it was easy to implement, so I hope it helps.
* jabber: set BEE_USER_NOOTR flag to _xmlconsoledequis2015-10-21-8/+16
| | | | | | | Fixes trac ticket 1111, https://bugs.bitlbee.org/bitlbee/ticket/1111 One of the most annoying issues. You're trying to debug stuff and it just crashes even harder than without the debug enabled.
* Add a per-user version of OPT_NOOTR, BEE_USER_NOOTRdequis2015-10-21-2/+5
|
* yahoo: call callback on connect error to fix memleakdequis2015-10-21-0/+1
| | | | | | Passing NULL as the "fd" and 0 as the error. The callback is yahoo_connected() in libyahoo2.c, and with those parameters all it does is freeing the data parameter.
* yahoo: Fix handling of proxy connection failuresdequis2015-10-21-1/+9
| | | | | | | | | | | | | | | Fixes trac ticket 135, https://bugs.bitlbee.org/bitlbee/ticket/135 The ticket mentions 100% cpu usage when failing to connect to a socks proxy. It also provides a patch that just checks source == -1 and disconnects cleanly instead of trying to continue logging in. This commit is pretty much the same thing, adapted to the API we're currently using, since the original patch was for bitlbee 1.0.1 and it looks like the old api was terrible back then. That ticket was almost 10 years old. The yahoo code didn't change a lot in that time.
* jabber: Fix XEP85 detection (typing) between two bitlbee usersdequis2015-10-21-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes trac ticket 1143: https://bugs.bitlbee.org/bitlbee/ticket/1143 The "correct" way to discover XEP85 support is to send a discovery query. We take a more conservative approach: if the irc client claims to support typing (by sending CTCP TYPING at least once), we send an <active> tag along with next chat message, and set JBFLAG_PROBED_XEP85. The logic for that stuff is in jabber_buddy_msg(). That's all neat and clever and actually works fine. What was broken was the detection side. Whenever a <composing>, <active> or <pause> is received, the buddy is marked as supporting XEP85. However the <active> tag had an additional check: /* No need to send a "stopped typing" signal when there's a message. */ else if (xt_find_node(node->children, "active") && (body == NULL)) { It skipped the tag completely if it had a message too. This was changed to move the body == NULL condition inside, so that the flag is set. Took me longer to write this message than the diff itself. But even longer to actually decide to debug this behavior. I'm the one who submitted that ticket, one year and a half ago. Yep.
* jabber: Fix outgoing google talk typing notificationsdequis2015-10-21-4/+7
| | | | | | | | | | | Since bare JIDs from typing notifications are now accepted, the other buddy objects never get the flag JBFLAG_DOES_XEP85 set. This fixes it by checking both the buddy with resource and the bare one, with the implication that if the bare JID has that flag, all other resources get typing notifications. Follow up to the previous commit, splitting since they are actually unrelated fixes, although this one is a consequence of the previous one.
* jabber: Fix incoming google talk typing notificationsdequis2015-10-21-1/+5
| | | | | | | | | | | | | | | | | | | | | | | jabber_buddy_by_jid() does the following: head = g_hash_table_lookup(jd->buddies, jid); bud = (head && head->next) ? head->next : head; 'head' has the one without resource, 'bud' has the first resource. So if a resource is available, it uses it and ignores the head. When asked for a bare JID (with no resource) and GET_BUDDY_EXACT, it shouldn't do this, but it should return the head. In other words, the problem was a message in this format: <message from="username@gmail.com" ...> Instead of <message from="username@gmail.com/resource" ...> This only deals with incoming typing notifications. See next commit.
* msn: Don't reconnect on wsse:FailedAuthentication errorsdequis2015-10-14-1/+7
| | | | That includes location blocked and incorrect password.
* msn: Better error messages on 'location blocked'dequis2015-10-14-0/+5
| | | | | | | This is what the 'howtofixmsn' wiki page addressed, which has a very generic name because it's one of the first msn issues that appeared when we thought it was dying. Since it's just a security measure, it still appears when people log in from unusual locations.
* otr: fix trailing whitespace issues with 'otr forget key'dequis2015-10-13-0/+3
| | | | Fixes trac ticket 1089, https://bugs.bitlbee.org/bitlbee/ticket/1089
* skype: create groupchat as soon as a message is receiveddequis2015-10-13-34/+32
| | | | | | | | | | | | | | | | | | Before this commit, the bee_chat_by_title() call just failed when receiving a message in a groupchat we didn't know about, which is probably something skype broke in their api at some point. I'm fixing this since apparently the only way to access p2p based chats is through the official skype desktop client (they won't be supported through msnp24 or skypeweb. It's broken in mobile clients already), so this plugin is probably the best way to access those. This breaks the 'msg' test - now all chats are groupchats and there's no way to tell them apart. However, in reality, private messages aren't delivered at all over the api, or at least I never managed to get them working. Probably if you talk with someone who has a very old patched skype client.
* skype tests: adjust channel length limit to fix tests...dequis2015-10-13-15/+15
| | | | | | | | | | | | | | The diff might look confusing - it's just removing the last hex digit of each channel name in the groupchat tests. This broke in several ways over the years. I know because i've been bisecting the last few hours and found lots of different issues. All of them except this one were fixed already This one is probably a side effect of the new irc channel name generation code that includes the # as part of the string and reuses the nick code. Or maybe not exactly that, but something similar. I'm not going to bisect any further, had enough for today.
* skype: fix tests to expect NOTICE * instead of NOTICE AUTHdequis2015-10-13-21/+21
| | | | Forgot to change this after b39859e
* skype: use g_vsnprintf() instead of vsnprintf()dequis2015-10-13-2/+1
| | | | | | More prefixes = better. The G stands for "good". (it also fixes the warning about _BSD_SOURCE being deprecated)
* skype: use ssl_sockerr_again() instead of sockerr_again()dequis2015-10-13-1/+1
| | | | | Found the thing using 100% cpu because of a dead connection that it didn't want to bury.
* twitter: Fix some nitpicky issues reported by coveritydequis2015-10-08-21/+24
| | | | | | Mostly minor rare leaks that happen in error conditions, and one dereference before null check in twitter_logout (the null check is probably the wrong one there, but it doesn't hurt to keep it)
* irc_sasl_plain_parse: fix size of the parts arraydequis2015-10-08-1/+1
| | | | | | | | Oddly enough it doesn't break. Maybe it overwrites the 'decoded' pointer when it doesn't need it anymore? Fun stuff. Also the version of gcc (5.2) i'm using doesn't complain about array bounds, clang does, and the older gcc (4.6) in travis does too.
* Fix use-after-free when leaving invited (temporary) channelsdequis2015-10-08-2/+5
| | | | | | | | | Trac ticket 1229, https://bugs.bitlbee.org/bitlbee/ticket/1229 This one is complicated. See the trac ticket for details. Relevant commits: cc20520 6963230 664bac3 - second one fixed the same issue, third one reverted it, this one takes a different approach.
* The SASL PLAIN RFC says that the first part can be emptydequis2015-10-08-2/+2
| | | | | | | | | | | | | | | | | So use the second part as the username, and only require it to be equal to the first part if that one is present. ABNF from the spec: message = [authzid] UTF8NUL authcid UTF8NUL passwd Note brackets. Authzid (authorization identity) is meant for impersonation, which we don't support. The actual login username is defined by authcid (authentication identity) Thanks grawity for pointing this out.
* IRCv3 SASL capability + PLAIN methoddequis2015-10-08-0/+143
| | | | | | | | | | | | | | | | | | | | | Only plain, no other methods. We don't have built-in SSL to implement EXTERNAL (certfp) and nothing else is worth implementing. The actual authentication is pretty much like sending a server password (when the server's authmode isn't closed), which means it happens in cmd_identify, but this code also calls storage_check_pass() to send the required success/failure replies. SASL doesn't give us much benefit other than standards compliance, but some clients might appreciate it. And having a fifth way to do the same thing doesn't hurt! Now we have: - identify in &bitlbee - identify to nickserv (alias for root) - 'nickserv' and 'ns' irc commands - server password - sasl plain
* irc_send_who: move the iu->flags check after iu has a value...dequis2015-10-08-3/+3
| | | | | | Moving this was suggested during the review of the multi-prefix patch as ordering the sets of status_prefix... and it seemed reasonable to me. Thanks valgrind.
* IRCv3 multi-prefix... but mostly just adding prefixes to WHOdequis2015-10-08-17/+34
| | | | | | | | | We can't actually have multiple prefixes internally, so the only thing missing for multi-prefix compliance is actually having the prefix in the WHO reply, which is a rfc1459 thing. Note to future self: check irc logs for the implementation I threw away. The one that actually handled multiple prefixes. I hope that's useful.
* Allow NULL callback functions in http_dorequestArtem Savkov2015-10-08-3/+7
| | | | | | | | | Check callback function supplied to http_dorequest and only run it if it is not NULL. While it is not the usual case there are some times when there is no need to check the results of a http request. Using a NULL pointer is much more convenient than creating noop functions.
* Replace <br/> and <br /> with \n in strip_htmlAndré Glüpker2015-10-08-0/+4
|
* Add missing space in configureAndré Glüpker2015-10-08-4/+4
|
* Fix typoMohammed Attia2015-10-08-1/+1
|
* jabber: Fix leak in jabber_gmail_handle_newdequis2015-10-08-2/+2
| | | | | | | From coverity. That g_strdup_printf() was really pointless, slightly ashamed we didn't notice that in the review of the patch.
* conf, help: Fix minor leaks in error conditionsdequis2015-10-08-0/+5
| | | | From coverity.
* jabber: fix null handling with MUC topicsdequis2015-10-08-1/+2
| | | | From coverity.
* Move CAP commands to irc_cap.c; use enum for flagsdequis2015-09-30-151/+190
|
* CAP LISTdequis2015-09-10-1/+24
|
* CAP LSdequis2015-09-10-6/+18
|
* CAP REQdequis2015-09-10-2/+90
|
* Initial implementation of ircv3 capability negotiationdequis2015-09-10-1/+38
| | | | | Mostly no-op for now. Puts registration on hold, supports the basic commands, and NAKs everything
* Allow setting the plugin dir at runtimeanderspapitto2015-09-05-0/+3
| | | | | | | This enables the use of bitlbee plugins in scenarios where there is no write access to the bitlbee lib/ directory. One example is the NixOS linux distribution (which I'm currently packaging a bitlbee plugin for), where post-installation modification of a package (e.g. bitlbee) by another package (e.g. bitlbee-facebook) is not possible. Another example would be a user without root access building and using a plugin with a system-provided (i.e. installed by root) bitlbee.
* Improved cross compiler support.Guillermo A. Amaral2015-08-31-4/+27
| | | | | | | | | * Added a configure option for sysroot. * Prevent pkgconfig environment variables to be clobbered. * Prevent PATH environment variable pollution. * Backward compatible. Signed-off-by: Guillermo A. Amaral <g@maral.me>
* user-guide: add help for the jabber 'proxy' settingdequis2015-08-27-0/+20
|
* irc_channel_name_gen: handle g_convert_with_fallback failuresdequis2015-08-27-0/+10
| | | | | | | | | | First fallback to ASCII without TRANSLIT, and if that fails too, just give up by returning NULL. Basically the same thing as 3a27896 (a netbsd specific fix), but for channel names. This wasn't needed before because the older version of this code caught the NULL from the ASCII//TRANSLIT attempt and gave up immediately, while the refactored version lacked null checking.
* jabber: Improvements to the MUC part reason handlingdequis2015-08-26-15/+26
| | | | | | | - Look for a status message right inside <presence> (seen with ejabberd as a result of a s2s connection error) - Check status codes in a while loop, skipping unknown ones (such as 110, which means "Inform user that presence refers to itself")
* jabber/io: Split input buffer parsing to a jabber_feed_input() functiondequis2015-08-26-51/+71
| | | | | | | | | | | To simplify testing. Also allow passing a -1 as size to use strlen() Minor behavior change: The jabber_init_iq_auth() branch can no longer return immediately, which means it will continue through the ssl_pending() check in jabber_read_callback(). Other than that, the size -1 change, and one indentation level less, the function body is the same as before.
* Makefile: suggest users to run "make install-dev" after installdequis2015-08-26-2/+6
| | | | Also add a couple of missing targets to .PHONY
* conf: Fix leak of members of conf_t when using -c to specify a configdequis2015-08-19-1/+30
| | | | | | Can only happen once, and it's just ~200 bytes. But being valgrind-clean is good.
* irc: Replace NOTICE AUTH before registration with NOTICE *dequis2015-08-18-3/+3
| | | | | | Because many other ircds do that. (But actually mostly because @SaberUK said so)
* otr: add otr_filter_colors, replaces '\x03' with '?' for "security"dequis2015-08-11-2/+16
| | | | | | | | | | | | | Fixes trac ticket 835, "an attacker can spoof color codes" Which had "major" priority, and was open for a few years. Yeah. Every time I looked at that ticket I thought about lowering the priority, but then saw that pesco opened the bug. Welp. Anyway, it's gone now. Yay.
* otr: color multiline messagesdequis2015-08-11-24/+51
| | | | | | | | | | | Fixes trac ticket 710. Incoming messages can have newlines in them, which become several PRIVMSG on the irc layer. Prepending color codes at the beginning of the message resulted in showing the rest of those PRIVMSG as white. This splits the message by newlines and rebuilds it in a GString, re-adding the color codes right after each newline.
* jabber_logout: avoid null jd->buddies warnings in jabber_buddy_remove_alldequis2015-08-08-1/+3
|