diff --git a/zephyr/models.py b/zephyr/models.py index 5bc34bbfd5..5ce737b276 100644 --- a/zephyr/models.py +++ b/zephyr/models.py @@ -24,6 +24,7 @@ import re from django.utils.html import escape MAX_SUBJECT_LENGTH = 60 +MAX_MESSAGE_LENGTH = 10000 @cache_with_key(lambda self: 'display_recipient_dict:%d' % (self.id,)) def get_display_recipient(recipient): @@ -556,7 +557,9 @@ def do_send_message(message, no_log=False): users = simplejson.dumps([str(user.id) for user in recipients]))) def internal_send_message(sender_email, recipient_type, recipient_name, - subject, content): + subject, content): + if len(content) > MAX_MESSAGE_LENGTH: + content = content[0:3900] + "\n\n[message was too long and has been truncated]" message = Message() message.sender = UserProfile.objects.get(user__email=sender_email) message.recipient = Recipient.objects.get(type_id=create_stream_if_needed( diff --git a/zephyr/views.py b/zephyr/views.py index ea8b03cf47..8805f62dbb 100644 --- a/zephyr/views.py +++ b/zephyr/views.py @@ -17,7 +17,7 @@ from zephyr.models import Message, UserProfile, Stream, Subscription, \ create_mit_user_if_needed, create_stream_if_needed, StreamColor, \ PreregistrationUser, get_client, MitUser, User, UserActivity, \ log_subscription_property_change, internal_send_message, \ - MAX_SUBJECT_LENGTH + MAX_SUBJECT_LENGTH, MAX_MESSAGE_LENGTH from zephyr.forms import RegistrationForm, HomepageForm, is_unique, \ is_active from django.views.decorators.csrf import csrf_exempt @@ -607,6 +607,8 @@ def send_message_backend(request, user_profile, client, if len(message_to) == 0: return json_error("Message must have recipients.") + if len(message_content) > MAX_MESSAGE_LENGTH: + return json_error("Message too long.") if client.name == "zephyr_mirror": # Here's how security works for non-superuser mirroring: