| Commit message (Collapse) | Author | Age | Lines |
|
|
|
|
| |
Most of the time that error meant a confusion on bitlbee's side, often a
server for which we sent a join request and never got a reply for.
|
|
|
|
| |
Holy crap this login method is *bad*
|
|
|
|
|
|
| |
Requires libpurple 2.12.0
Mostly relevant recently with slack-libpurple.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
RIP
This plugin relied on the skype linux client, which doesn't work
anymore. During login it just does exit(0) for mysterious reasons.
I guess that's the server trying to say that it's not supported.
This is officially dead now after a few years of kinda-almost-working.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
RIP
As per http://ismsndeadyet.com/ all versions up to MSNP22 died a few
months ago. We had a MSNP21 implementation, bought us two extra years.
Implementing MSNP24 is technically possible but also pointless given
skypeweb, and the authentication requires some fairly messed up crypto
and legacy old-skype-protocol servers. For a long time I tried to
reverse a potentially simpler method, and got fairly close, but never
completed that. I haven't done any attempts to continue it in the last
year, so I'm fine with giving up at this point.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the presence needed to finalize a join to the channel, the
'from' field is our own user in the context of that channel:
<presence to="dx@server/resource" from="channel@gateway.server/dx">
<x xmlns="http://jabber.org/protocol/muc#user">
<status code="110"/>
<item jid="~dx@198.51.100.1" affiliation="none" role="participant"/>
</x>
</presence>
Bitlbee takes the stuff to <item jid="..."> as the "real" jid, as it
does for non-anonymous MUCs. It sets that to ext_jid, and uses it as the
handle internally.
In this particular case, that real jid is nonsense for us, so
imcb_chat_add_buddy() interprets that as yet another person joining the
channel, instead of the expected self-join.
This fixes it by checking if the buddy is our own user, and ignoring the
provided ext_jid in those cases.
Thanks to ivucica for reporting this, who was using Biboumi (a gateway
from XMPP to IRC)
|
|
|
|
| |
Add MUC buddies before applying nick changes
|
|
|
|
|
|
|
| |
Silence the following compiler warning: format specifies type
'unsigned long long' but the argument has type 'guint64'. When
formatting a json_integer, use PRId64 for int64_t. When formatting
ordinary integers, use G_GUINT64_FORMAT for guint64.
|
|
|
|
| |
Noisy but often important
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In other words, "account jabber set away Message" resulted in away
status being set, but not "Message".
Fixes trac ticket 1291
This was broken by ac68733ad7a5127395d6367b655a2d9de5d911b5 (3.4.2)
That commit added another call of imc_away_state_find() with the fixed
string "away", so purple protocols can become away by setting away to
any string. But by doing so, it wiped the status message because it's
the same as the name of the away state.
|
| |
|
|
|
|
| |
Defaults to disabled to maintain the status quo.
|
|
|
|
|
| |
Followup to 701ab81 (included in 3.5) which was a partial fix which only
improved things for non-libpurple file transfers (that is, just jabber)
|
|
|
|
|
|
| |
That is, flagged with PURPLE_MESSAGE_DELAYED. Those are safe to display.
This is similar to what adium does. Thanks EionRobb for the idea.
|
|
|
|
| |
Accidentally broke it in d57484d (from last week)
|
|
|
|
|
|
|
| |
This constant is always available and meant to be used with
getnameinfo().
This fixes the build on Debian GNU/kFreeBSD.
|
|
|
|
| |
Credit for the idea goes to russian XMPP spammers. Thanks!
|
|
|
|
|
| |
This one was caught by the debian build scripts in travis. I had
format-security in my local cflags, not format-string. Welp.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds channel settings prefixed by purple_. For example jabber now
has purple_room and purple_server which are decomposed variants of our
own 'room' setting. Okay, that doesn't sound very useful.
It also adds some sync from the values returned by chat_info_defaults()
- so if the plugin figures something out in there, we save it in our
own settings.
In the case of SIPE this adds a new setting, purple_uri, which can be
set with the ma-chan:// uri for a persistent chat.
This solves the issue with the SIPE plugin only knowing how to do name
lookups after doing 'chat list' - now it just needs to work once, and we
save the real URI in our settings.
|
|
|
|
|
|
|
|
| |
Just comparing the body of the last sent message. This isn't foolproof
and sending several messages quickly can make it fail, but it's less
annoying than before. The correct solution is still to fix the server.
In the case of slack I still recommend using the irc gateway instead.
|
|
|
|
|
|
| |
Because crashing asserts are bad, and maybe this helps fix the
captures_build_path issue with debian's reproducible builds
(those asserts probably include __FILE__)
|
|
|
|
| |
Nothing interesting.
|
|
|
|
|
|
|
|
| |
The whitelist includes hangouts, funyahoo and icq.
These plugins tend to have numeric or meaningless usernames. With this
change, users don't have to do 'ac whatever set nick_format %full_name'
anymore. Just sugar.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
warn_unused_result on write() is particularly annoying. You can't just
add (void) to ignore it due to gcc bug 66425.
I replaced some of those with fwrite() and used a variable marked with
the G_GNUC_UNUSED attribute for the writes from signal handlers.
|
|
|
|
|
|
|
| |
The room names in 'chat list' were missing the server part.
Jabber is the only prpl which implements this method as far as I can
see, and it's needed to get the full name.
|
| |
|
|
|
|
|
| |
Some structs still have xml in their name but meh, at least that's not
visible to the user.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Turns out he already implemented pretty much the same thing in the
parson branch... last year.
The differences between the two approaches are subtle (there aren't too
many ways to do this, some lines are the exact same thing) but I decided
I like his version better, so this mostly reverts a handful of my
changes while keeping others. The main advantage of his approach is that
no fake protocols are registered, no actual prpl functions are called,
and the missing prpl is a singleton constant.
New things compared to the implementation in the other branch:
- The explain_unknown_protocol() function.
- Fixed named chatrooms throwing a warning and losing the "account"
setting when saving. See changes in irc_im.c
- Fixed the "server" setting dropping when saving. See account.c
Differences with my previous implementation:
- Accounts with missing protocols don't autoconnect
- 'account list' marks them as "(missing!)"
|
|
|
|
| |
Which is -Werror'd in debian builds
|
| |
|
|
|
|
|
|
| |
RIP
The previous commit already handled the part of telling users.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of failing to load the config, a fake prpl is created to load
the account, keep its settings, and refuse to log in with a helpful
error message.
Also added a new explain_unknown_protocol() function which returns text
which attempts to explain why a protocol is missing, handling several
typical cases, including the future removal of several dead libpurple
plugins.
That message is shown when logging in to a loaded account with a missing
protocol and when adding a new one with 'account add', with the
difference that the latter doesn't leave a placeholder fake account.
|
|
|
|
|
|
| |
This adds a prpl_options_t enum with flags, which mostly just brings
OPT_PROTO_{NO_PASSWORD,PASSWORD_OPTIONAL} from libpurple as
PRPL_OPT_{NO_PASSWORD,PASSWORD_OPTIONAL}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This means cancelling transfers on logout to avoid crashes, keeping
track of timeouts, reffing and unreffing the xfers, listening to the
callbacks from UI and purple more carefully and using the correct
functions to free the correct things at the correct moments.
Originally intended to fix a crash triggered when the dcc stall timeout
kicks in after the account is offline, which is apparently very frequent
with telegram (it sends file transfers while fetching history, and
randomly disconnects a while later).
Trying to fix that meant opening a can of worms, but after three days of
work on this bug I'm pretty sure I've finished dealing with the
resulting mess and tested all the typical edge cases.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Because our purple module is all about hacks, adding more can't hurt.
There's a string comparison for "Enter a Conference Server". It's
gettexted in the source but in practice it isn't affected by locale
(bitlbee disables localization).
Worst case, if this stops working, it will open an input request like it
did before this commit. It also does that in purple's jabber if you
don't provide a server parameter.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Which happens when moving from non-purple to purple.
Fixes trac ticket 1269
Since "oscar" doesn't exist in purple, the old code called
register_protocol() to associate oscar with prpl-aim, which meant that
aim accounts migrated seamlessly to purple but icq accounts broke
silently, throwing incorrect password errors.
Now the oscar protocol is special-cased to return prpl-aim or prpl-icq
depending on the first character of the username, which is the same
thing the built-in oscar protocol does.
|
| |
|
|
|
|
| |
Also applies to hipchat.
|
|
|
|
|
| |
I found myself copypasting this to jabber. Might as well make it part of
the API.
|
|
|
|
|
|
|
|
|
| |
bee_chat_list_finish is still available as a deprecated function but it
will be removed before the next stable release
It has never been part of any release, just keeping it for a while for
the sake of being polite to the users of the discord plugin who may be
using the experimental chat list branch.
|
|
|
|
|
|
|
|
|
| |
Fixes crashes when a topic is unset and strip_html is set to always.
Turns out that the strip_html() function does a strcpy at the end which
may write a single null byte over the null byte of the empty string, and
if it's not in writable memory, that blows up.
Thanks to iamthemcmaster / mcm for pointing this out
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Two issues here:
1. SIPE called in_progress(FALSE) immediately (which decreases refcount),
before purple_roomlist_get_list() could return (which would normally
increase refcount). The first refcount decrease steals it from the prpl,
and bad things happen.
Added an initialized flag to only do that decrease after it was
increased first. This is similar to how pidgin sets a 'dialog' attribute
after the purple_roomlist_get_list() call, and skips the unref if it's
not set.
2. The code assumed that NULL return value means room listing not
supported. That's not quite true, so now it checks in the prpl info to
see if roomlist_get_list is defined.
Also, made purple_roomlist_data more private.
|
|
|
|
|
|
|
|
|
|
|
|
| |
The outermost entities object only contains the url of the compat tweet,
the one linking to /i/web/status/[...]
The inner entities object, inside the "extended_tweet", is the one that
contains the quoted tweet url that we're supposed to replace.
But expand_entities() assumed that the quoted_status object would be
next to entities, which doesn't apply in the case of extended tweets.
So now it gets an extra parameter to look for entities.
|
|
|
|
|
|
|
| |
Like funyahoo++, which has online and offline statuses, but bitlbee's
purple filters those out, resulting in an empty list, and boom.
It's ugly enough that I think I'll add a workaround to the plugin too.
|