25
1
mirror of https://github.com/processone/ejabberd.git synced 2024-11-04 15:36:57 +01:00
Commit Graph

2832 Commits

Author SHA1 Message Date
Christophe Romain
f3d24b6a07 Revert "added optimizations from BBC" (wrong upstream)
This reverts commit d1377da151.
2011-11-23 15:07:02 +01:00
Christophe Romain
d1377da151 added optimizations from BBC 2011-11-23 15:04:24 +01:00
Pablo Polvorin
d471be26cf Fix typo 2011-11-10 15:08:55 -03:00
Pablo Polvorin
31f6a9e66e Add command to persist recent MUC messages (EJABS-1785)
Example:
$ejabberdctl persist_recent_messages
Host 'localhost' , 4 messages persisted in 12 rooms
2011-11-10 12:54:11 -03:00
Pablo Polvorin
d736c47649 Do not delete persistent MUC messages on restart (EJABS-1785)
Otherwise, if the server crash (not properly stopped), all recent
messages are lost.  In this case, it is better to at least keep
the outdated ones (and miss the new ones that were not saved to DB).
2011-11-10 11:07:34 -03:00
Pablo Polvorin
0e4806820e Moderate on all nodes with one command (EJABS-1733)
ejabberdctl moderate_room_history now do a multicast to
moderate the room history on all nodes on the cluster
(as the room might be replicated on different nodes).
2011-10-26 09:48:21 -03:00
Pablo Polvorin
3850b91571 Store room to disc on creation if room is persistent
If the mod_muc configuration says that rooms are
persistent by default, store the room to disc once
it is created, as there are use cases where there are
no further config after room creation, and so
the write to disc was never triggered.
2011-10-18 13:45:02 -03:00
Evgeniy Khramtsov
7b0174a626 Replace dont_concat with max_concat option 2011-10-18 23:44:00 +10:00
Evgeniy Khramtsov
2270df86d9 Use queue instead of a list in order to avoid O(N) complexity 2011-10-18 15:34:11 +10:00
Pablo Polvorin
a04131c6d7 Bugfix: room history and NO_TRANSIENT_SUPERVISORS option
Fix bug that prevent ejabberd to Save room history to DB
when using the NO_TRANSIENT_SUPERVISORS compiler option.
2011-10-14 11:30:34 +02:00
Evgeniy Khramtsov
e5830253b9 New BOSH option: dont_concat (EJABS-1688) 2011-10-14 15:57:15 +10:00
Evgeniy Khramtsov
b7a07087d1 Fix merge conflict 2011-09-30 22:44:44 +10:00
Christophe Romain
adf56dedf3 fix merge conflicts from 2.1.9 2011-09-30 14:28:40 +02:00
Badlop
4be7984a0e Update ejabberd version number to 2.1.9 2011-09-26 18:11:18 +02:00
Badlop
3b0b318730 New release notes for 2.1.9 2011-09-26 18:09:01 +02:00
Christophe Romain
6bfd8b8e9a update the pubsub_odbc patch 2011-09-26 16:35:31 +02:00
Evgeniy Khramtsov
39bc499b10 Fix instruction and error text 2011-09-26 20:00:43 +10:00
Evgeniy Khramtsov
de4d4a4bbb Change "muc#role" field type to "hidden" 2011-09-26 19:54:55 +10:00
Evgeniy Khramtsov
8631dd14e9 Correct lists:keysearch output processing and fix dialyzer warning 2011-09-26 19:06:34 +10:00
Evgeniy Khramtsov
e7d12f4b9e Code cleanup 2011-09-26 18:44:41 +10:00
Maxim Ignatenko
f17a531e15 Use treap correctly 2011-09-26 11:16:30 +03:00
Maxim Ignatenko
ff57c8a58c Apply patch from Evgeniy Khramtsov 2011-09-26 11:16:30 +03:00
Maxim Ignatenko
499b884c67 Use treap for keeping last voice request timestamps 2011-09-26 11:16:29 +03:00
Maxim Ignatenko
0c261fb903 Fix voice request/approvement detection and extract_jid_from_voice_approvement/1 2011-09-26 11:16:29 +03:00
Maxim Ignatenko
322263fd5c Fix typo 2011-09-26 11:16:29 +03:00
Maxim Ignatenko
845f5cabec Fix patterns in check_voice_request_fields/2 and check_voice_approvement_fields/2 2011-09-26 11:16:29 +03:00
Maxim Ignatenko
f919349173 Use more pattern-matching 2011-09-26 11:16:29 +03:00
Maxim Ignatenko
a91ae03dc6 Remove try/catch 2011-09-26 11:16:29 +03:00
Maxim Ignatenko
faed7698c2 Use pattern matching in check_voice_request_fields/2 and check_voice_approvement_fields/2 2011-09-26 11:16:29 +03:00
Maxim Ignatenko
eb8347f92b Reverse arguments order for timer:now_diff/2 2011-09-26 11:16:29 +03:00
Maxim Ignatenko
c53ffe6dc5 Fix return value inconsistency in last_voice_request_time/2 2011-09-26 11:16:29 +03:00
Maxim Ignatenko
7c8eab4f43 Use jlib:parse_xdata_submit/1 in is_voice_request/1 and is_voice_approvement/1 2011-09-26 11:16:29 +03:00
Maxim Ignatenko
b1d8168dd3 Use bare JID as key in state.last_voice_request_time 2011-09-26 11:16:28 +03:00
Maxim Ignatenko
c196c1f5e5 Use lists:foreach instead of lists:map in send_voice_request/2 2011-09-26 11:16:28 +03:00
Maxim Ignatenko
604563af76 Remove needless time conversions 2011-09-26 11:16:28 +03:00
Maxim Ignatenko
6848d3affe Ignore any extra elements in voice approvement form submission 2011-09-26 11:16:28 +03:00
Maxim Ignatenko
6708914e99 Add 2 room config options
- Allow voice requests?
 - Minimum interval between voice requests
2011-09-26 11:16:28 +03:00
Maxim Ignatenko
5921f9c506 Simple rate control
Visitor allowed to send new voice request only after specified amount of
time (or after rejoining).
2011-09-26 11:16:28 +03:00
Maxim Ignatenko
6193ed63b1 Voice approvement support 2011-09-26 11:16:28 +03:00
Maxim Ignatenko
18dd0d08cb Implement basic voice request processing logic.
No rate control or configuration for now
2011-09-26 11:16:28 +03:00
Maxim Ignatenko
8dd6f128bf Implement voice approvement detection and remove some debug code 2011-09-26 11:16:28 +03:00
Maxim Ignatenko
04267930de Fix form instructions 2011-09-26 11:16:27 +03:00
Maxim Ignatenko
d83716dece Use ejabberd_router:route/3 directly, instead of send_packet_to/3 2011-09-26 11:16:27 +03:00
Maxim Ignatenko
c77358bdc1 Use exception handling in is_invitation/1 2011-09-26 11:16:27 +03:00
Maxim Ignatenko
44987479a5 Fix exception handling in is_voice_request/1 2011-09-26 11:16:27 +03:00
Maxim Ignatenko
30d89abf66 Implemented sending voice request and fixed some bugs 2011-09-26 11:16:27 +03:00
Maxim Ignatenko
f175be6b78 Add function for detecting voice requests 2011-09-26 11:16:27 +03:00
Maxim Ignatenko
2a41ca0628 More correct dispatching of normal messages to conference room
is_invitation/1 function returns true if <x> element of message is
an invitation
2011-09-26 11:16:27 +03:00
Janusz Dziemidowicz
c4f9a050c9 Decrease CPU usage caused by tls:send with large data.
Sending one large chunk of data with tls:send eats lots of
CPU power and blocks whole Erlang emulator. This is caused by the
fact that encrypted output is read from memory BIO in 1k chunks.
Memory BIO, after reading data, shifts the remaining part.
If large chunks of data (few MB) is sent and then read in 1k
chunks, then a _lot_ of shifting is performed eating CPU.

The solution is to simply allocate binary of the needed size
(amount of data in memory BIO can be retrieved with
BIO_ctrl_pending) and then issue only one read that reads the
whole data.
2011-09-25 00:23:31 +02:00
Pablo Polvorin
1babae067d Persist muc history on DB on server shutdown (EJABS-1733).
Ejabberd can be configured to store recent history of MUCs
to DB before shutdown. On restart, those messages are
retrieved from storage.

To enable it, set {persist_history, true} in mod_muc configuration,
ej:
  {mod_muc,      [
                  %%{host, "conference.@HOST@"},
                  {access, muc},
                  {access_create, muc_create},
                  {access_persistent, muc_create},
                  {access_admin, muc_admin},
                  {persist_history, true}
                 ]},

Messages are only stored on server shutdown, not on the fly.

$ejabberdctl stop
or
init:stop()
inside a debug console works.

Note: Only rooms configured as "persistent" will save messages
      (as other rooms doesn't survive server restart anyway).

Limitations: There is no option to store messages on mnesia, you *must*
     use a ODBC database.  Only tested with mysql.

Check odbc/mysql.sql  for the definition of the table "room_history",
the one needed for this.
2011-09-24 18:39:03 -03:00