aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/jabber/conference.c
Commit message (Collapse)AuthorAgeLines
* jabber: Add "always_use_nicks" setting, for non-anonymous MUCsdequis2016-03-20-2/+12
| | | | | | | | | Basically the same thing as github PR #55, which fixes trac bug 415, but this one conditionalized that behavior and uses the API introduced a few commits ago. I didn't think too much about the setting name and i'm open to changing it to anything else
* jabber: Check for other resources before removing someone from a chatdequis2016-03-20-1/+14
| | | | | | So if someone has several connections with several clients to a chat, they won't appear as leaving from the chat until they leave from the last client.
* jabber: Mark messages from other resources as OPT_SELFMESSAGE toodequis2016-01-24-1/+3
| | | | | | | The jabber_buddy used for messages sent from other resources connected to the same groupchat has a different ext_jid and it's a different object than jc->me, so doing a string comparison against acc->user is needed.
* jabber_chat_join_failed: add a null check before freeing the chatdequis2015-11-23-1/+4
| | | | | | Had this one in a stash, i think it's about trying to join a channel with an invalid JID and getting an error with a different JID back, so doing jabber_chat_by_jid() doesn't find it.
* Nuke imcb_clean_handle(), which was merging handles accidentallydequis2015-11-09-3/+0
| | | | | | | | | | | | | | | | Well, just deprecated and turned into a no-op. It was only used for jabber anonymous MUCs, but this is something the IRC layer must take care of. It stripped all whitespace, control and non-ascii characters, breaking utf8 nicks support and accidentally merging contacts whose cleaned-up handles were the same string. For example, you could have two users with nicks ' ' and ' ' (one and two spaces respectively) and imcb_clean_handle() would just merge them into a single handle, '', which makes them look like a single irc user. The same thing happens with nicks that are entirely made of utf8. Thanks to schoppenhauer from #bitlbee for reporting this and preparing a test case channel!
* jabber: Self message handling (echo removal) in MUCsdequis2015-10-30-11/+16
| | | | | | | | | | | | | | | | | | | | | XMPP MUCs always echo own messages, and send messages from other clients. So, we must display everything except the messages we just sent. This implementation uses the jabber stanza cache to add an ID to the message and attach it to a callback which always returns XT_ABORT. This way, if we do get the echo, the message packet handler can call jabber_cache_handle_packet(), and if it returns XT_ABORT, it can skip that particular message. Every other message that looks like it comes from our own JID and wasn't handled by the cache will be displayed, with the OPT_SELFMESSAGE flag Stanza cache entries expire after some time, so it's not a problem if the server doesn't echo messages for some reason. I actually wrote this forever ago, for hipchat, but it works the same way for standard XMPP MUCs.
* jabber: fix null handling with MUC topicsdequis2015-10-08-1/+2
| | | | From coverity.
* 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: Show MUC kick/ban/leave reasonsdequis2015-08-08-2/+34
|
* jabber: Refactor conference message handlingdequis2015-05-28-55/+65
| | | | | | | | - Improve handling of "unknown 'from'" - Try a bit harder to detect the source of the message, and fall back to messages sent from a fake temporary user. - Fix receiving topic when it was set by someone who left the room. - Add jabber_get_bare_jid() utility function
* jabber: Fixed null deref when receiving <subject> from oneselfdequis2015-04-03-2/+2
| | | | | | | | If the from="..." of the message that includes a subject refers to us, that buddy object won't have an ext_jid set, and passing that to strchr() results in pain. This happens with recent versions of an xmpp server called "lets-chat".
* Reindent everything to K&R style with tabsIndent2015-02-20-242/+240
| | | | | | | Used uncrustify, with the configuration file in ./doc/uncrustify.cfg Commit author set to "Indent <please@skip.me>" so that it's easier to skip while doing git blame.
* I'm still bored on a long flight. Wrote a script to automatically updateWilmer van der Gaast2013-02-21-1/+1
| | | | | | | my copyright mentions since some were getting pretty stale. Left files not touched since before 2012 alone so that this change doesn't touch almost EVERY source file.
* Support for "nameless" chatrooms on Jabber.Wilmer van der Gaast2012-02-10-0/+47
| | | | | | | Just join #somechannel and start inviting people. It should Just Work, like on other IM networks. Works at least with GTalk and with other servers that have conference stuff installed on conference.$servername.
* Detect JID changes at login time and warn the user about them.Wilmer van der Gaast2011-12-20-1/+2
|
* Fixing handling of (Jabber) chatroom topic changes done by the user.Wilmer van der Gaast2010-09-05-9/+9
|
* Mainline merge.Wilmer van der Gaast2010-05-13-1/+3
|\
| * Fixed a long-standing bug where non-anonymous Jabber chatrooms could causeWilmer van der Gaast2010-05-11-1/+3
| | | | | | | | | | | | | | | | | | | | | | full JIDs to be added to the local contact list, but not removed when leaving the room, eventually triggering errors like the one in #499. People kept sending me these dumps and I finally took time to make what turned out to be this one-line fix. This error should never appear again unless people are doing really crazy stuff.
* | Use ?, not &&.Wilmer van der Gaast2010-05-13-1/+1
| |
* | Fixed buggy jabber_chat_by_jid() after GSList change.Wilmer van der Gaast2010-05-08-1/+1
| |
* | Starting to restore chatroom stuff. Only enough to create and be joinedWilmer van der Gaast2010-05-06-1/+3
|/ | | | | into a room. More will follow soon.
* Fixing a crash bug that causes crashes only with buggy Jabber conferenceWilmer van der Gaast2009-10-04-6/+9
| | | | | | servers, sending a "you left this chat" without first acknowledging you entering it.
* Fixed a bug that caused crashes when joining certain kinds of Google TalkWilmer van der Gaast2009-06-03-2/+4
| | | | | | | | | chatrooms. Doesn't seem to be Google Talk specific, other than that this is the first time I see empty <x xmlns="http://jabber.org/protocol/muc#user"/> elements that cause this crash. A more proper/efficient fix may be to just move the break outside the inner if.
* Adding the password to the right part of the <presence> stanza so joiningWilmer van der Gaast2008-09-28-1/+1
| | | | | password-protected rooms *really* works.
* Restored support for password-protected chatrooms (for now only by acceptingWilmer van der Gaast2008-09-28-1/+1
| | | | | a password in the IRC JOIN command).
* Added support for password-protected Jabber chatrooms.Wilmer van der Gaast2008-02-10-0/+2
|
* Messages from the user are also included in backlogs when joining a JabberWilmer van der Gaast2008-02-03-3/+6
| | | | | | chatroom. Until now they were ignored, which might make backlogs a little bit confusing.
* The Jabber module now uses imcb_chat_log() instead of imcb_log() whereWilmer van der Gaast2008-01-20-5/+41
| | | | | possible.
* Fixed handing of failed groupchat joins.Wilmer van der Gaast2008-01-13-6/+5
|
* Added /invite support for Jabber chatrooms (and fixed the argument orderWilmer van der Gaast2007-12-09-0/+21
| | | | | to chat_invite).
* Forgot to return something in jabber_chat_join_failed().Wilmer van der Gaast2007-12-02-3/+3
|
* Handling of presence-error packets (only useful for groupchats now), movedWilmer van der Gaast2007-12-02-4/+44
| | | | | | jabber_chat_by_jid() (with the right name) to conference.c, I don't know what it was doing in jabber_util.c.
* Added Jabber groupchat topic support.Wilmer van der Gaast2007-11-19-0/+28
|
* Added imcb_clean_handle() to sanitize handles properly (without puttingWilmer van der Gaast2007-07-15-0/+3
| | | | | | | IRC-specific stuff into the Jabber module). Only using this in the MUC code for now because this only works if the IM module can somehow convert the cleaned up handle back to the original one.
* Added (and using) jabber_chat_free() for better memory management, fixedWilmer van der Gaast2007-07-02-7/+14
| | | | | | channel name generation code in root_commands.c and fixed one memory leak in jabber_buddy_remove_bare().
* Stripping of unwanted characters (@ and =) in channel nicknames.Wilmer van der Gaast2007-07-02-1/+11
|
* Keeping an original (not normalized) copy of the user's nickname. ThisWilmer van der Gaast2007-07-01-2/+5
| | | | | | | fixes a bug reported by James Teh in the monster ticket #20. There's no proper garbage collection yet in the Jabber conference code, really have to do that soon. :-(
* Better handling of private messages via groupchats.Wilmer van der Gaast2007-07-01-3/+5
|
* Added imcb_remove_buddy() so deletions in Jabber roster pushes actuallyWilmer van der Gaast2007-06-14-1/+3
| | | | | | work. This also solves the issue of underscores appearing and disappearing in their nicknames when people leave/join a chat.
* Calling imcb_add_buddy() before setting the nickname. This is the onlyWilmer van der Gaast2007-06-04-3/+6
| | | | | way to set the nickname in time before BitlBee sends the JOIN.
* Added imcb_buddy_nick_hint so the Jabber conference module can suggest saneWilmer van der Gaast2007-06-04-0/+3
| | | | | | | | nicknames for chatroom participants. There'll probably be a lot of underscores now, but this is by far the cleanest way to implement this, I think. At least now whispers will work properly. Also using this function call to set names for ICQ contacts in a slightly saner way.
* Now anonymous rooms should really work. This makes sure the self-join willWilmer van der Gaast2007-06-04-4/+8
| | | | | | actually be recognized properly. This is running on my work machine for a few days already.
* Prepared the Jabber module for anonymous rooms, but the BitlBee coreWilmer van der Gaast2007-04-25-14/+17
| | | | | | doesn't deal with it very well, and I don't really know yet how I'll solve this... :-(
* Fixes: handling of being kicked, now sending <presence/> tags to allWilmer van der Gaast2007-04-22-0/+2
| | | | | conferences the user's in.
* Got rid of one HORRIBLE stupidity called chat_by_channel(), which stillWilmer van der Gaast2007-04-22-2/+2
| | | | | | | used the GLOBAL IM connections list, allowing user A to interfere with user B's groupchats if running in daemon mode. I can't believe this was still there...
* You can send messages too now. But it's still very kludgy and doesn't workWilmer van der Gaast2007-04-22-9/+20
| | | | | with anonymous rooms (ie about 95% of all available Jabber chatrooms?).
* Read-only support for Jabber conferences (non-anonymous rooms only).Wilmer van der Gaast2007-04-22-0/+193
Just don't use this, you're really not going to like it. :-)