'ascii' codec can't decode byte 0xc3 in position 7622: ordinal not in range(128)

37 views
Skip to first unread message

Paulius

unread,
Apr 23, 2024, 12:38:39 PMApr 23
to Review Board Community
Hello!

I recently installed(5.0.5) and upgraded(6.0.2) Review Board. I am testing out email service but getting error once review is updated. Error below.
  • Test email from settings was successfully sent. 
  • I still receive error emails about this but not review emails
Any idea what has caused this and how to fix it?

Thanks!

UnicodeDecodeError at /api/review-requests/3/reviews/
'ascii' codec can't decode byte 0xc3 in position 7622: ordinal not in range(128)

Request Method: POST
Request URL: http://10.17.17.161/api/review-requests/3/reviews/
Django Version: 3.2.25
Python Executable: /usr/bin/python3
Python Version: 3.10.12
Python Path: ['/var/www/10.17.17.161/conf', '/var/www/10.17.17.161/venv/lib/python3.10/site-packages', '/usr/lib/python310.zip', '/usr/lib/python3.10', '/usr/lib/python3.10/lib-dynload', '/usr/local/lib/python3.10/dist-packages', '/usr/lib/python3/dist-packages']
Server time: Tue, 23 Apr 2024 15:40:30 +0000
Installed Applications:
['corsheaders',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.messages',
 'django.contrib.sites',
 'django.contrib.sessions',
 'django.contrib.staticfiles',
 'djblets',
 'djblets.avatars',
 'djblets.configforms',
 'djblets.datagrid',
 'djblets.extensions',
 'djblets.features',
 'djblets.feedview',
 'djblets.forms',
 'djblets.gravatars',
 'djblets.integrations',
 'djblets.log',
 'djblets.pipeline',
 'djblets.privacy',
 'djblets.recaptcha',
 'djblets.siteconfig',
 'djblets.util',
 'haystack',
 'oauth2_provider',
 'pipeline',
 'reviewboard',
 'reviewboard.accounts',
 'reviewboard.actions',
 'reviewboard.admin',
 'reviewboard.attachments',
 'reviewboard.avatars',
 'reviewboard.changedescs',
 'reviewboard.diffviewer',
 'reviewboard.extensions',
 'reviewboard.hostingsvcs',
 'reviewboard.integrations',
 'reviewboard.notifications',
 'reviewboard.oauth',
 'reviewboard.reviews',
 'reviewboard.scmtools',
 'reviewboard.site',
 'reviewboard.webapi',
 'django_evolution',
 'rbintegrations']
Installed Middleware:
['django.middleware.gzip.GZipMiddleware',
 'reviewboard.admin.middleware.init_review_board_middleware',
 'corsheaders.middleware.CorsMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.http.ConditionalGetMiddleware',
 'django.middleware.locale.LocaleMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'djblets.siteconfig.middleware.SettingsMiddleware',
 'reviewboard.admin.middleware.load_settings_middleware',
 'djblets.extensions.middleware.ExtensionsMiddleware',
 'djblets.integrations.middleware.IntegrationsMiddleware',
 'djblets.log.middleware.LoggingMiddleware',
 'reviewboard.accounts.middleware.timezone_middleware',
 'reviewboard.accounts.middleware.update_last_login_middleware',
 'reviewboard.admin.middleware.check_updates_required_middleware',
 'reviewboard.accounts.middleware.x509_auth_middleware',
 'reviewboard.site.middleware.LocalSiteMiddleware',
 'djblets.extensions.middleware.ExtensionsMiddlewareRunner',
 'reviewboard.admin.middleware.ExtraExceptionInfoMiddleware']


Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/usr/local/lib/python3.10/dist-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/local/lib/python3.10/dist-packages/django/views/decorators/vary.py", line 20, in inner_func
    response = func(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/resources/base.py", line 650, in __call__
    result = self.call_method_view(
  File "/usr/local/lib/python3.10/dist-packages/reviewboard/webapi/base.py", line 348, in call_method_view
    return super(WebAPIResource, self).call_method_view(
  File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/resources/mixins/api_tokens.py", line 62, in call_method_view
    return super(ResourceAPITokenMixin, self).call_method_view(
  File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/resources/mixins/oauth2_tokens.py", line 99, in call_method_view
    return super(ResourceOAuth2TokenMixin, self).call_method_view(
  File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/resources/base.py", line 941, in call_method_view
    return view(request, *args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/resources/base.py", line 1123, in post
    return self.create(request,
  File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/decorators.py", line 156, in _call
    return view_func(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/reviewboard/webapi/decorators.py", line 165, in _check
    return view_func(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/decorators.py", line 156, in _call
    return view_func(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/decorators.py", line 177, in _checklogin
    return view_func(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/decorators.py", line 156, in _call
    return view_func(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/decorators.py", line 156, in _call
    return view_func(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/decorators.py", line 323, in _validate
    return view_func(*args, **new_kwargs)
  File "/usr/local/lib/python3.10/dist-packages/reviewboard/webapi/resources/base_review.py", line 257, in create
    result = self.update_review(request, review, *args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/reviewboard/webapi/resources/review.py", line 121, in update_review
    return super(ReviewResource, self).update_review(
  File "/usr/local/lib/python3.10/dist-packages/reviewboard/webapi/resources/base_review.py", line 389, in update_review
    review.publish(user=request.user,
  File "/usr/local/lib/python3.10/dist-packages/reviewboard/reviews/models/review.py", line 520, in publish
    review_published.send(sender=self.__class__,
  File "/usr/local/lib/python3.10/dist-packages/django/dispatch/dispatcher.py", line 180, in send
    return [
  File "/usr/local/lib/python3.10/dist-packages/django/dispatch/dispatcher.py", line 181, in <listcomp>
    (receiver, receiver(signal=self, sender=sender, **named))
  File "/usr/local/lib/python3.10/dist-packages/reviewboard/notifications/email/signal_handlers.py", line 155, in send_review_published_mail
    message, sent = send_email(prepare_review_published_mail,
  File "/usr/local/lib/python3.10/dist-packages/reviewboard/notifications/email/utils.py", line 330, in send_email
    message = email_builder(**kwargs)
  File "/usr/local/lib/python3.10/dist-packages/reviewboard/notifications/email/message.py", line 429, in prepare_review_published_mail
    return prepare_base_review_request_mail(
  File "/usr/local/lib/python3.10/dist-packages/reviewboard/notifications/email/message.py", line 244, in prepare_base_review_request_mail
    return EmailMessage(subject=subject.strip(),
  File "/usr/local/lib/python3.10/dist-packages/reviewboard/notifications/email/message.py", line 70, in __init__
    super(EmailMessage, self).__init__(
  File "/usr/local/lib/python3.10/dist-packages/housekeeping/functions.py", line 411, in _call
    return func(*new_args, **new_kwargs)
  File "/usr/local/lib/python3.10/dist-packages/djblets/mail/message.py", line 305, in __init__
    not is_email_allowed_by_dmarc(parsed_from_email))):
  File "/usr/local/lib/python3.10/dist-packages/djblets/mail/dmarc.py", line 383, in is_email_allowed_by_dmarc
    dmarc_record = get_dmarc_record(hostname)
  File "/usr/local/lib/python3.10/dist-packages/djblets/mail/dmarc.py", line 342, in get_dmarc_record
    psl = PublicSuffixList(fp)
  File "/usr/local/lib/python3.10/dist-packages/publicsuffix/__init__.py", line 54, in __init__
    root = self._build_structure(input_file)
  File "/usr/local/lib/python3.10/dist-packages/publicsuffix/__init__.py", line 98, in _build_structure
    for line in fp:
  File "/usr/lib/python3.10/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]

Exception Type: UnicodeDecodeError at /api/review-requests/3/reviews/
Exception Value: 'ascii' codec can't decode byte 0xc3 in position 7622: ordinal not in range(128)

Paulius

unread,
Apr 24, 2024, 8:01:05 AMApr 24
to Review Board Community
Hello again.

For anyone running into the same issue, I fixed it by changing port from 587 to 25 in email "E-MAIL SERVER SETTINGS"

Christian Hammond

unread,
May 20, 2024, 10:34:49 PMMay 20
to revie...@googlegroups.com
This is in part due to a bug in a third-party library we're using.

Review Board 7 will be out soon, and removes this dependency, moving to a more modern and maintained library that thankfully resolves this.

Christian

--
Supercharge your Review Board with Power Pack: https://www.reviewboard.org/powerpack/
Want us to host Review Board for you? Check out RBCommons: https://rbcommons.com/
Happy user? Let us know! https://www.reviewboard.org/users/
---
You received this message because you are subscribed to the Google Groups "Review Board Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to reviewboard...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/reviewboard/58155a35-e981-4f16-9d7d-ea5fe95ea553n%40googlegroups.com.


--
Christian Hammond
President/CEO of Beanbag
Makers of Review Board
Reply all
Reply to author
Forward
0 new messages