aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMickaël Rémond <mickael.remond@process-one.net>2007-08-13 10:27:28 +0000
committerMickaël Rémond <mickael.remond@process-one.net>2007-08-13 10:27:28 +0000
commitdb957c42950aff2e4cfedecfef0b184d4275c1c8 (patch)
tree9a3a49c4269be08949ddde6216bdd0c1f4407e01
parent* src/odbc/ejabberd_odbc.erl: UTF-8 support for MySQL5 (EJAB-318). (diff)
* src/mod_offline.erl: Returns an error message to sender when
message is discarded due to quota (EJAB-314). SVN Revision: 871
-rw-r--r--ChangeLog5
-rw-r--r--src/mod_offline.erl22
2 files changed, 24 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 3ebdd2b76..3e1f8df03 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-08-13 Mickael Remond <mickael.remond@process-one.net>
+
+ * src/mod_offline.erl: Returns an error message to sender when
+ message is discarded due to quota (EJAB-314).
+
2007-08-12 Mickael Remond <mickael.remond@process-one.net>
* src/odbc/ejabberd_odbc.erl: UTF-8 support for MySQL5 (EJAB-318).
diff --git a/src/mod_offline.erl b/src/mod_offline.erl
index e98caf0ba..da221aaef 100644
--- a/src/mod_offline.erl
+++ b/src/mod_offline.erl
@@ -31,7 +31,8 @@
%% TODO: Move this part as a module config file parameter:
%% Can be an integer > 0 or infinity:
--define(MAX_OFFLINE_MSGS, infinity).
+%%-define(MAX_OFFLINE_MSGS, infinity).
+-define(MAX_OFFLINE_MSGS, 5).
start(Host, _Opts) ->
mnesia:create_table(offline_msg,
@@ -69,8 +70,7 @@ loop() ->
end,
if
Count > ?MAX_OFFLINE_MSGS ->
- %% TODO: Warn that messages have been discarded
- ok;
+ discard_warn_sender(Msgs);
true ->
if
Len >= ?OFFLINE_TABLE_LOCK_THRESHOLD ->
@@ -405,3 +405,19 @@ update_table() ->
?INFO_MSG("Recreating offline_msg table", []),
mnesia:transform_table(offline_msg, ignore, Fields)
end.
+
+
+%% Helper functions:
+
+%% Warn senders that their messages have been discarded:
+discard_warn_sender(Msgs) ->
+ lists:foreach(
+ fun(#offline_msg{from=From, to=To, packet=Packet}) ->
+ ErrText = "Your contact offline message queue is full. The message has been discarded.",
+ Lang = xml:get_tag_attr_s("xml:lang", Packet),
+ Err = jlib:make_error_reply(
+ Packet, ?ERRT_RESOURCE_CONSTRAINT(Lang, ErrText)),
+ ejabberd_router:route(
+ To,
+ From, Err)
+ end, Msgs).