Anatomy of list ids does not keep with that of urls causes some REST end points to return 404 always

Bug #1429366 reported by Ankush Sharma on 2015-03-07
14
This bug affects 3 people
Affects Status Importance Assigned to Milestone
GNU Mailman
Undecided
Ankush Sharma
GNU Mailman REST Client
Undecided
Ankush Sharma
Postorius
Undecided
Ankush Sharma

Bug Description

The hash(#) and question mark(?) is a valid character as far as the local part of the email addresses is concerned.
Reference: http://stackoverflow.com/questions/2049502/what-characters-are-allowed-in-email-address

So, as the mailing list addresses are email addresses too, we can use # in the list names too. And, in context with mailman it works well. We can create a list with list_id sam#hashed.host.org for the address sam#<email address hidden> . This works fine. But it makes the list_id to contain the hash character and therefore the REST endpoint for retrieving list wise info becomes invalid, i.e :

<api-root>/lists/sam#hashed.host.org

Because in an URL the stuff after # is treated as document starting point i.e an id identifier or something of a dom element. This is not a valid PATH for the server. Therefore the falcon wsgi request object does not contain information of that and the req.path simply returns sam as the list_id ( http://bazaar.launchpad.net/~mailman-coders/mailman/3.0/view/head:/src/mailman/rest/wsgiapp.py#L65 ) giving a 404 because there is no any list with list id sam.
The mailman client works fine, it sends a GET to <api-root>lists/sam#hashed.host.org.

This causes the REST end points which needs list_id to return 404 or in worse we can have a list_id clash between ids sam#XXXXX and sam. Further more if the list_id starts with a # character then the server finds list_id to be empty string and therefore we get a KEY ERROR because fqdn_listname is not set too. The bug highly effects postorius too. The lists index template at /postorius/lists/ cannot be rendered as it uses the former REST endpoint and again a 404 is given. And, until we delete this list from the database, we can't do anything except of getting a 404 and KEY ERROR each time.

Bug discussed in detail here: http://www.mail-archive.com/mailman-developers%40python.org/msg15317.html

Related branches

description: updated
Ankush Sharma (black-perl) wrote :

Anyone got into trouble after replication of this bug can refer here : https://gist.github.com/black-perl/b5a36089ed9c1939391f

Changed in mailman:
status: New → Confirmed
Changed in postorius:
status: New → Confirmed
Changed in mailman:
assignee: nobody → Ankush Sharma (black-perl)
Changed in postorius:
assignee: nobody → Ankush Sharma (black-perl)
description: updated
description: updated
description: updated
tags: added: mailman.client
Changed in mailman.client:
status: New → Confirmed
assignee: nobody → Ankush Sharma (black-perl)
Changed in mailman:
status: Confirmed → In Progress
Changed in mailman.client:
status: Confirmed → In Progress
Changed in postorius:
status: Confirmed → In Progress
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers