Jean-Sébastien Pédron
b08ae07347
acl doesn't require conversion anymore.
...
SVN Revision: 1399
2008-07-01 09:46:57 +00:00
Jean-Sébastien Pédron
ffbf8d5faa
Convert acl to exmpp.
...
SVN Revision: 1398
2008-07-01 09:41:32 +00:00
Jean-Sébastien Pédron
f55274c7fb
o Use jlib:short_bare_jid/1.
...
o Rewrite is_auth_packet/1 to use new formats.
o Don't convert <presence/> before calling ejabberd_sm:set_presence/7.
o Don't convert broadcast children, because it's an internal special
element.
SVN Revision: 1397
2008-07-01 09:17:48 +00:00
Jean-Sébastien Pédron
b9074097da
Forgot to convert a <presence/> from the new to the old record.
...
SVN Revision: 1396
2008-07-01 09:13:49 +00:00
Jean-Sébastien Pédron
83a33726ce
Add function short_bare_jid/1.
...
SVN Revision: 1395
2008-07-01 09:12:59 +00:00
Jean-Sébastien Pédron
8c33e12616
Use the new clause of exmpp_stanza:reply_with_error/2, exmpp_iq:error/2,
...
exmpp_iq:error_without_original/2 and the new exmpp_jid:make_bare_jid/1.
SVN Revision: 1394
2008-07-01 08:01:06 +00:00
Jean-Sébastien Pédron
87218e1447
Convert to exmpp.
...
SVN Revision: 1393
2008-07-01 07:49:57 +00:00
Jean-Sébastien Pédron
06965000a5
Before doing any routing, the router print a warning if old structures
...
are used. Then it converts the structures to the old format and route
them. The router doesn't care about the structures format but the
conversion is necesary for code called from this module.
In C2S and S2S, no conversion is done before calling
ejabberd_router:route/3.
SVN Revision: 1392
2008-06-30 16:55:03 +00:00
Jean-Sébastien Pédron
cc033b3b98
o Use the new functions from jlib.
...
o Use the new exmpp_xml:node_to_list/3.
SVN Revision: 1391
2008-06-30 15:51:23 +00:00
Jean-Sébastien Pédron
290040ad9d
o Add function to convert to and from old ejabberd #jid record.
...
o Move function short_jid/1 from ejabberd_c2s.
SVN Revision: 1390
2008-06-30 15:49:58 +00:00
Jean-Sébastien Pédron
264e72830b
Convert to exmpp.
...
SVN Revision: 1389
2008-06-30 14:04:31 +00:00
Jean-Sébastien Pédron
d05c2ee8a1
Use -include_lib instead of -include to include exmpp.hrl. This is a
...
better solution than specifying the path (with -I) on erlc(1) command
line.
SVN Revision: 1388
2008-06-30 12:13:15 +00:00
Jean-Sébastien Pédron
b32aba27c1
o Use the new exmpp namespace macro names.
...
o Update send_element/2 to use exmpp new to_list functions.
SVN Revision: 1384
2008-06-27 13:46:08 +00:00
Jean-Sébastien Pédron
22e79490ff
Convert to exmpp.
...
SVN Revision: 1383
2008-06-26 15:48:19 +00:00
Jean-Sébastien Pédron
1a311a30b5
o Use a macro in ?DEFAULT_NS instead of the namespace atom directly.
...
o Comment DBGFSM our again.
o Remove macro ERR_SERVICE_UNAVAILABLE.
o In wait_for_auth and is_auth_packet, an empty resource is returned as
'undefined', not the empty string in the {auth, ...} tuple.
o In handle_sync_event, remove a debugging printf.
o In handle_info({route, ...}), use macro IS_PRESENCE & friends instead
of direct matching with NS_JABBER_CLIENT and name. This way, the S2S
doesn't have to change the namespace of all its incoming stanzas to
NS_JABBER_CLIENT.
o In send_element, for stanzas under the NS_JABBER_SERVER namespace, lie
to exmpp_xml by telling it that this namespace is the default one.
SVN Revision: 1382
2008-06-26 15:47:21 +00:00
Jean-Sébastien Pédron
999f3233bb
Fix short JID comparison in get_subscribed_and_online; it was using
...
'undefined' instead of empty strings.
SVN Revision: 1381
2008-06-25 13:27:03 +00:00
Jean-Sébastien Pédron
07651d712f
Finish ejabberd_c2s conversion with the functions related to offline
...
stanzas.
SVN Revision: 1380
2008-06-25 12:37:45 +00:00
Jean-Sébastien Pédron
6f931ce4fd
Convert all presence-related functions.
...
SVN Revision: 1378
2008-06-24 16:12:56 +00:00
Jean-Sébastien Pédron
e93e846e16
o Use the new exmpp_stream:opening_reply/3 function in wait_for_stream/2.
...
o The function terminate/3 is converted to exmpp.
SVN Revision: 1377
2008-06-24 09:44:56 +00:00
Jean-Sébastien Pédron
4e2e68a3fb
The handle_info clause that treats routing order is now converted.
...
In-memory sets and dict still use the short JID form with empty strings
for unspecified fields. Users are able to connect to ejabberd but some
features don't seem to work proprerly.
SVN Revision: 1376
2008-06-24 08:55:24 +00:00
Jean-Sébastien Pédron
e95df7999f
Convert JID to the expected form outside of the C2S (empty fields must
...
be set to the empty string). This fixes the broken routing.
SVN Revision: 1375
2008-06-23 11:47:10 +00:00
Jean-Sébastien Pédron
2a43998444
o Change the usage of #state.lang somewhat.
...
o Fix value of DefaultLang: it doesn't contain the whole serialized
attribute.
o Use exmpp_jid:make_bare_jid/2 more.
I started to work on the second half of the module and discovered
several annoying things:
o JID are represented in two forms: the #jid record and the
{N, D, R} tuple.
o Sometimes, #xmlelement may contain non-#xml* tuples in their
children. This is the case for some <presence/> stanzas. Their
children are used to pass random data.
I'm less and less convicted that ejabberd_c2s can be fully converted
without starting to work on other modules.
SVN Revision: 1370
2008-06-20 14:54:59 +00:00
Jean-Sébastien Pédron
389b5e6448
First bunch of modifications to use exmpp. All FSM state function are
...
updated. But other functions are not for now.
Users are able to connect to ejabberd but some features may not work.
SVN Revision: 1368
2008-06-20 12:52:29 +00:00
Jean-Sébastien Pédron
a19f280fcc
Enable the new #xmlel record.
...
SVN Revision: 1367
2008-06-20 12:50:20 +00:00
Jean-Sébastien Pédron
e4646a6788
Add exmpp detection.
...
SVN Revision: 1366
2008-06-20 12:49:39 +00:00
Jean-Sébastien Pédron
58bfea2ad1
Replace the use of xml_stream by exmpp_xmlstream. exmpp_xml is
...
configured to produce old #xmlelement records. exmpp_xmlstream is
configured to send old xmlstreamstart tuple.
Users are able to connect to ejabberd.
Next step: ejabberd_c2s.
SVN Revision: 1365
2008-06-19 10:23:52 +00:00
Badlop
5fdcb52306
* src/ejabberd.app: The ejabberd version number is defined in the
...
OTP application resource file, in the key 'vsn' (EJAB-657)
* src/ejabberd.hrl: The macro VERSION now consults the ejabberd
application key vsn
* src/configure.erl: Load the ejabberd application description
* doc/Makefile: Read ejabberd version from ejabberd.app vsn
* doc/api/Makefile: Likewise
SVN Revision: 1361
2008-06-18 21:33:48 +00:00
Christophe Romain
fe82bf3e81
temporary roster_groups_allowed (EJAB-655)
...
SVN Revision: 1359
2008-06-18 16:35:03 +00:00
Christophe Romain
638d789ae6
pubsub get_default bugfix (EJAB-656)
...
SVN Revision: 1358
2008-06-18 16:19:18 +00:00
Badlop
cbf63d06a8
* src/mod_muc/mod_muc_room.erl: Allow admins to send messages to
...
rooms even if not joined (EJAB-645)
* doc/guide.tex: Likewise
* doc/guide.html: Likewise
SVN Revision: 1356
2008-06-13 18:55:26 +00:00
Badlop
e22913d46f
* src/ejabberd.cfg.example: Add registration_timeout (EJAB-653)
...
SVN Revision: 1355
2008-06-13 17:51:01 +00:00
Badlop
ff94e586eb
* src/ejabberd_c2s.erl: Bugfix: deliver messages when first
...
presence is Invisible (thanks to Dariusz Markowicz)(EJAB-262)
SVN Revision: 1348
2008-06-09 23:43:47 +00:00
Badlop
59201f1def
* src/msgs/pl.msg: Bugfix in arguments of translated string that
...
could crash the room (thanks to Anastasia Gornostaeva)
SVN Revision: 1345
2008-06-04 13:21:36 +00:00
Badlop
1e345eb0fc
* src/web/ejabberd_web.erl (make_xhtml/2): Allow to include
...
elements in the HTTP header
SVN Revision: 1344
2008-05-31 18:21:43 +00:00
Badlop
110a4b4518
* src/odbc/odbc_queries.erl (del_user_return_password): Return
...
password (thanks to Oleg Palij)
SVN Revision: 1343
2008-05-31 17:09:13 +00:00
Mickaël Rémond
5e9576ffa3
* src/ejabberd_s2s.erl: Added s2s_send_packet and s2s_receive_packet hooks (EJAB-635).
...
* src/ejabberd_s2s_in.erl: Likewise.
SVN Revision: 1342
2008-05-22 10:53:49 +00:00
Mickaël Rémond
cf42ea0bcb
* src/ejabberd_c2s.erl: user_send_packet hook now called on all packets including presence packets (EJAB-634)
...
SVN Revision: 1341
2008-05-22 10:19:35 +00:00
Badlop
30f54a6bfc
* src/configure.ac: R12 support: remove compilation
...
warning (EJAB-630)
* src/configure: Likewise
* doc/guide.tex: Likewise
SVN Revision: 1334
2008-05-19 09:20:35 +00:00
Mickaël Rémond
8dae53abda
* src/ejabberd_s2s_out.erl: Fix compilation error.
...
SVN Revision: 1332
2008-05-18 12:34:52 +00:00
Mickaël Rémond
8a8a02431f
* src/ejabberd_s2s_out.erl: Avoid an harmless error (function clause in logs)
...
SVN Revision: 1331
2008-05-18 12:28:58 +00:00
Badlop
4e77bae206
* src/extauth.erl: Log strange responses from extauth script. Use
...
timeout (EJAB-627)
SVN Revision: 1330
2008-05-17 11:44:25 +00:00
Badlop
c892a60da5
* src/mod_muc/mod_muc_room.erl: Allow change_state of a room
...
SVN Revision: 1329
2008-05-16 18:05:03 +00:00
Christophe Romain
5bec1eedc1
Change FSMTIMEOUT to 30s
...
SVN Revision: 1328
2008-05-16 15:29:33 +00:00
Badlop
da56452fba
* src/mod_muc/mod_muc_room.erl: Return Forbidden error message
...
when user sends private message in a room that disallows
it (EJAB-595)
SVN Revision: 1323
2008-05-12 20:35:43 +00:00
Badlop
98e47e8c73
* src/web/ejabberd_http.erl (parse_auth): Allow password that
...
include colon character (EJAB-522)
SVN Revision: 1322
2008-05-12 17:56:27 +00:00
Mickaël Rémond
977a20700a
* src/mod_ip_blacklist.erl: Better error handling (EJAB-625).
...
SVN Revision: 1321
2008-05-09 19:53:06 +00:00
Mickaël Rémond
1a2bb06075
* src/mod_ip_blacklist.erl: ignore when we do not have the IP.
...
SVN Revision: 1320
2008-05-08 14:55:06 +00:00
Mickaël Rémond
e4f098a104
* src/mod_ip_blacklist.erl: Update the list every 6 hours.
...
SVN Revision: 1319
2008-05-05 16:31:48 +00:00
Mickaël Rémond
740ce75599
* src/mod_ip_blacklist.erl: Added C2S blacklist support (EJAB-625).
...
SVN Revision: 1318
2008-05-05 16:25:52 +00:00
Mickaël Rémond
a664579b58
* src/ejabberd_c2s.erl: Added C2S blacklist support (EJAB-625).
...
* src/mod_ip_blacklist.erl: Likewise.
* src/jlib.erl: Added IP format tuple to string function.
* src/ejabberd_socket.erl: Properly handled c2s start failure (happen for blacklisted IP).
SVN Revision: 1317
2008-05-05 16:22:06 +00:00
Alexey Shchepin
8267194d5e
* src/ejabberd_receiver.erl: Don't activate a socket untill its
...
receiver process is controlling it
SVN Revision: 1316
2008-05-04 07:38:24 +00:00
Christophe Romain
2304f8cbc8
XEP-0115 patch (EJAB-618)
...
SVN Revision: 1313
2008-04-30 08:49:39 +00:00
Badlop
ef531fb208
* src/ejabberd_s2s_out.erl: Improve confusing log message in s2s
...
connection: wait_for_validation connect timeout (EJAB-617)
SVN Revision: 1311
2008-04-29 16:59:03 +00:00
Badlop
e5879f4349
* src/ejabberd.cfg.example: Small improvements in explanations
...
* doc/guide.tex: Document MUC room options (EJAB-619)
SVN Revision: 1310
2008-04-29 16:44:12 +00:00
Christophe Romain
edf1ed5c87
remove unused served_hosts option
...
SVN Revision: 1306
2008-04-28 13:02:07 +00:00
Alexey Shchepin
85d3b27d71
* src/mod_muc/mod_muc_room.erl: Fixed room shaper processing
...
SVN Revision: 1305
2008-04-27 19:06:34 +00:00
Badlop
4c937ab94e
* src/mod_shared_roster.erl: Fix for new registered accounts not
...
being immediately shown in an 'all' special shared roster
group (thanks to Alexey Shchepin) (EJAB-71)
* src/mod_register.erl: New vhost event user_registered
SVN Revision: 1303
2008-04-26 17:37:43 +00:00
Badlop
c88a4650ba
* src/ejabberd_c2s.erl: Added forbidden_session_hook
...
* src/acl.erl: New access types: resource, resource_regexp and
resource_glob
* doc/guide.tex: Likewise
SVN Revision: 1301
2008-04-25 09:25:31 +00:00
Alexey Shchepin
b1756e8e34
* src/treap.erl: Bugfix
...
* src/mod_register.erl: Fixed table creation, timeout isn't
activated when registration fails
SVN Revision: 1300
2008-04-23 13:14:08 +00:00
Alexey Shchepin
797544333c
* src/mod_register.erl: Restrict registration frequency per IP or
...
user
* src/ejabberd_c2s.erl: Pass IP to the c2s_unauthenticated_iq hook
* src/ejabberd_config.erl: Added registration_timeout option
* src/treap.erl: Treaps implementation
SVN Revision: 1299
2008-04-22 21:51:32 +00:00
Badlop
96f0c001d9
* src/ejabberd_auth.erl: Improve anonymous authentication to not
...
remove rosters accidentally (EJAB-549). New functions in
ejabberd_auth to get/check password and know which module accepted
the authentication. New element 'auth_module' in ejabberd_c2s
record 'statedata'. Cyrsasl provides a new property in the
response: {auth_module, AuthModule}.
* src/ejabberd_auth_anonymous.erl: Likewise
* src/ejabberd_c2s.erl: Likewise
* src/cyrsasl_anonymous.erl: Likewise
* src/cyrsasl_digest.erl: Likewise
* src/cyrsasl_plain.erl: Likewise
SVN Revision: 1297
2008-04-22 17:41:30 +00:00
Badlop
ee6aae8211
* src/ejabberd_s2s_out.erl: Fix long timeout when reconnecting s2s
...
after a remote server crash (EJAB-540)
* src/ejabberd_s2s_in.erl: Likewise
* src/ejabberd_s2s.erl: Likewise
* doc/guide.tex: Likewise
SVN Revision: 1296
2008-04-18 12:19:45 +00:00
Christophe Romain
d46b7d5908
Cache negative response (EJAB-474)
...
SVN Revision: 1294
2008-04-14 12:02:18 +00:00
Badlop
7c64509c46
* src/web/ejabberd_web_admin.erl: Include Last-Modified HTTP
...
header in responses to allow caching (EJAB-546)
SVN Revision: 1292
2008-04-12 08:09:05 +00:00
Badlop
cf8c08c980
* src/Makefile.in: Improved indentation of GCC call
...
* src/ejabberd_zlib/Makefile.in: Likewise
* src/mod_irc/Makefile.in: Likewise
* src/stringprep/Makefile.in: Likewise
* src/tls/Makefile.in: Likewise
SVN Revision: 1291
2008-04-11 17:32:20 +00:00
Badlop
ab9b30c4d4
* src/ejabberd_listener.erl (start_listener): Revert SVN r1260.
...
SVN Revision: 1290
2008-04-11 15:47:44 +00:00
Alexey Shchepin
9733e6874e
* src/ejabberd_config.erl: Removed a dependency on string:to_upper
...
SVN Revision: 1288
2008-04-11 05:52:10 +00:00
Alexey Shchepin
8b690c9f9f
* src/tls/tls_drv.c: Fixed gcc signedness warnings
...
* src/ejabberd_zlib/ejabberd_zlib_drv.c: Likewise
SVN Revision: 1287
2008-04-11 05:20:08 +00:00
Alexey Shchepin
bd884274c0
* src/expat_erl.c: Removed R9B workaround
...
SVN Revision: 1286
2008-04-11 05:19:27 +00:00
Christophe Romain
367610dd38
pubsub identity and database update bugfix
...
SVN Revision: 1285
2008-04-10 14:11:06 +00:00
Mickaël Rémond
b8b2bde8d0
*src/ejabberd_c2s.erl: Uniform default value for empty privacy list. Fixes (EJAB-603).
...
SVN Revision: 1281
2008-04-10 08:14:38 +00:00
Badlop
2af65d4f42
* src/ejabberd_auth_ldap.erl: LDAP function to get the number of
...
registered users is too slow (EJAB-331): set timeout in LDAP
search queries (thanks to Evgeniy Khramtsov) and return the number
of registered users.
SVN Revision: 1280
2008-04-08 09:37:06 +00:00
Badlop
076132a5d4
* src/ejabberd_auth_ldap.erl (get_vh_registered_users_number): New
...
function that returns 0 registered users (EJAB-331).
SVN Revision: 1276
2008-04-04 18:57:01 +00:00
Badlop
2c8cc8ae2d
* src/ejabberd_c2s.erl (process_presence_probe): Don't route a
...
presence probe to oneself (EJAB-498)
SVN Revision: 1275
2008-04-03 22:35:26 +00:00
Badlop
1649dec58e
* src/ejabberd_config.erl: Add support to include additional
...
configuration files. Add support for macro definition and
usage. (EJAB-593)
* doc/guide.tex: Likewise
* doc/guide.html: Likewise
SVN Revision: 1273
2008-04-02 16:31:15 +00:00
Christophe Romain
f0ee4f999d
Do not ignore values passed from configure (EJAB-592)
...
SVN Revision: 1272
2008-04-02 14:24:18 +00:00
Christophe Romain
37fc28ef49
add condition inclusion of pep in disco identity (EJAB-564)
...
SVN Revision: 1268
2008-04-02 09:06:28 +00:00
Christophe Romain
ef6ce3c7c0
typo fix on ejabberdctl.template
...
SVN Revision: 1266
2008-04-01 11:47:51 +00:00
Badlop
5fd627b85b
* doc/api/Makefile: Report the correct ejabberd version. When
...
cleaning, remove also erlang.png
* src/mod_muc/mod_muc_room.erl: Update source code to prevent
warning messages from EDoc
* src/mod_pubsub/mod_pubsub.erl: Likewise
* src/mod_pubsub/node_default.erl: Likewise
* src/mod_pubsub/nodetree_default.erl: Likewise
* src/mod_pubsub/nodetree_virtual.erl: Likewise
* src/mod_pubsub/pubsub.hrl: Likewise
SVN Revision: 1265
2008-04-01 10:11:39 +00:00
Christophe Romain
273c076ef6
Add firewalling port range definition
...
SVN Revision: 1264
2008-04-01 09:07:29 +00:00
Badlop
dcc00bca6d
* src/ejabberd_listener.erl: Remove code of the unused listening
...
socket option 'ssl' (EJAB-159)
* src/ejabberd_app.erl: Likewise
SVN Revision: 1263
2008-03-31 19:48:35 +00:00
Badlop
f634e4dc0d
* src/ejabberd_listener.erl (start_listener): Start also the
...
supervisor of the module
SVN Revision: 1260
2008-03-31 09:30:51 +00:00
Badlop
ab1610021d
* src/Makefile.in: Support for parallel compilation with 'make -j'
...
in multi core CPUs: fix compilation dependencies; compile
behaviors before other source code. (thanks to Jonathan Schleifer)
* src/mod_pubsub/Makefile.in: Likewise
* src/eldap/Makefile.in: Likewise
SVN Revision: 1258
2008-03-26 09:27:46 +00:00
Alexey Shchepin
9b3926baf1
* src/ejabberd_local.erl: The iq_response table wasn't cloned
...
automatically on all nodes which resulted in a single point of
failure
SVN Revision: 1257
2008-03-25 22:23:38 +00:00
Badlop
28c082551d
* src/Makefile.in: Only try to install epam if pam was enabled
...
in configure script (thanks to Etan Reisner)(EJAB-586)
SVN Revision: 1256
2008-03-25 18:59:45 +00:00
Badlop
48e066999b
* src/Makefile.in: Failure to install epam is not
...
critical (EJAB-573)
SVN Revision: 1255
2008-03-25 17:18:47 +00:00
Badlop
9e5721a5d9
* src/msgs/de.msg: Fix irc typo (thanks to Jonathan Schleifer)
...
* src/msgs/cs.msg: Likewise
* src/msgs/pl.msg: Likewise
* src/msgs/sk.msg: Likewise
SVN Revision: 1253
2008-03-24 01:28:55 +00:00
Mickaël Rémond
f7a9e5bac0
* src/eldap/Makefile.in: Generate ELDAPv3.beam during first Makefile pass (EJAB-583).
...
SVN Revision: 1249
2008-03-22 16:42:28 +00:00
Badlop
86df7de48f
* src/mod_caps.erl: Move two log calls ERROR_MSG to DEBUG
...
* src/shaper.erl: Move log call INFO_MSG to DEBUG
SVN Revision: 1247
2008-03-21 18:58:07 +00:00
Christophe Romain
1247a98cf2
Pubsub subscription is now wrapped in pubsub tags (EJAB-580)
...
SVN Revision: 1244
2008-03-21 16:05:32 +00:00
Christophe Romain
618af5e07a
Seek epam binary into priv/bin (EJAB-573)
...
SVN Revision: 1243
2008-03-21 15:42:14 +00:00
Christophe Romain
b2bd9759c8
Rewrite io:format calls to loglevel macros (EJAB-555)
...
SVN Revision: 1239
2008-03-21 14:44:16 +00:00
Mickaël Rémond
4cef493b91
* src/eldap.erl: Improved logging. We now use ejabberd logging framework (EJAB-582).
...
* src/eldap.erl: Faster LDAP reconnection (Thanks to Christophe Romain) (EJAB-581)
SVN Revision: 1236
2008-03-20 16:28:36 +00:00
Mickaël Rémond
320c266276
* src/ejabberd_s2s.erl: Only trigger s2s_connect_hook on successful connection (EJAB-566)
...
* src/ejabberd_s2s_out.erl: Likewise
SVN Revision: 1235
2008-03-17 10:16:21 +00:00
Mickaël Rémond
4cf68c2f9f
* src/ejabberd_ctl.erl: API improvement: Added reopen_log_hook (EJAB-565)
...
SVN Revision: 1234
2008-03-15 10:57:38 +00:00
Mickaël Rémond
295da9cf02
* src/ejabberd_s2s.erl: API improvement: Added s2s_connect_hook (EJAB-566).
...
SVN Revision: 1232
2008-03-15 09:35:33 +00:00
Badlop
04aec272db
* src/odbc/ejabberd_odbc.erl: Start ODBC explicitely because
...
Erlang R12 doesn't start automatically like in R11 and
older (thanks to Sergei Golovan)(EJAB-541)
SVN Revision: 1231
2008-03-13 14:34:47 +00:00
Badlop
7c377783fa
* src/ejabberd.hrl: Removed unused ejabberd_debug and
...
PRIVACY_SUPPORT. Reordered the remaining options
SVN Revision: 1230
2008-03-13 14:13:29 +00:00
Badlop
d2eb00d814
* src/mod_echo.erl: Small change to avoid a compilation warning of
...
unused function
SVN Revision: 1228
2008-03-12 23:05:49 +00:00
Badlop
9ae1282854
* src/web/ejabberd_web_admin.erl (term_to_string): Show Erlang
...
terms in one line in Erlang R12 (EJAB-503)
SVN Revision: 1227
2008-03-12 22:29:53 +00:00