Edgewall Software
Modify

Opened 13 years ago

Last modified 13 years ago

#9755 new defect

milestone name containing spaces breaks milestone editing within roadmap view and admin module

Reported by: hazen@… Owned by:
Priority: normal Milestone: unscheduled
Component: general Version: 0.12.1
Severity: normal Keywords:
Cc: Branch:
Release Notes:
API Changes:
Internal Changes:

Description

Steps to reproduce:

  1. From Trac instance homepage, click "Roadmap".
  2. Click "Add new milestone".
  3. Set field "Name of milestone:" to "More Coffee".
  4. Click "Add milestone". Notice that we're still on the "New Milestone" page, and the "Name of milestone:" field now reads "More%20Coffee" (URL encoding).
  5. Click "Roadmap". Notice that milestone "More Coffee" is present.
  6. Click link for milestone "More Coffee". Notice that we're back at the "New Milestone" page, instead of editing the "More Coffee" milestone.

Expected behavior:

Milestones with phrasal names act the same as milestones whose names do not contain spaces. Otherwise, perhaps some intelligent conversion of phrasal names to camel case should occur.

Attachments (0)

Change History (7)

comment:1 by Remy Blank, 13 years ago

That seems to be a frontend issue. It's working fine here with both tracd and Apache / mod_wsgi. What web frontend do you use? Do you use a proxy?

It seems that something is URL-encoding that shouldn't.

comment:2 by hazen@…, 13 years ago

Yes, this could be the problem; I'm using nginx to proxy https requests to trac via fastcgi. I'm not sure how to verify nginx is the culprit here. Is there anything with trac's logs I could search for to determine this?

comment:3 by hazen <hazen@…>, 13 years ago

I've verified that trac is receiving URL encoded requests from nginx:

2010-11-03 12:38:31,266 Trac[main] DEBUG: Dispatching <Request "GET '/milestone/More%20Coffee'">

Should this really cause trac to misbehave as described above? I'm not sure I can alter nginx's URL encoding behavior without modifying its source. I'm using nginx v0.8.53.

comment:4 by Christian Boos, 13 years ago

If you were proxying to trac via ajp, you could use the --unquote parameter (have a look at the tips in TracStandalone#Usingtracdbehindaproxy).

Otherwise, this report sounds a lot like #9034, which was solved by … migrating to lighttpd ;-)

If you want to stay with nginx, you could eventually go with the TracNginxRecipe and use tracd like described above.

What kind of script are you using right now? The standard trac.fcgi or something else? We might eventually add to the trac.fcgi something similar to tracd's --unquote.

comment:5 by hazen@…, 13 years ago

cboos, thanks for pointing out #9034. That is indeed my setup. I moved from lighttpd to nginx because of this problem a while ago (proxy response buffering of large trac attachments was bringing the host to its knees), but perhaps that issue has been resolved.

I'm using the standard trac.fcgi generated by trac-admin <env> deploy, started via spawn-fcgi to listen to a unix socket.

comment:6 by Remy Blank, 13 years ago

Milestone: unscheduled

None of the developers are using nginx, so I'm afraid you're on your own. I'm keeping this ticket open, please report back if you manage to get your setup working.

comment:7 by hvisser, 13 years ago

Just found that in Trac 0.12.2 you can set the TRAC_USE_FLUP environment var to true and fcgi_frontend.py will escape the url before passing it to Trac. That solved this issue for me. My setup is also nginx, and Trac through fastcgi.

Modify Ticket

Change Properties
Set your email in Preferences
Action
as new The ticket will remain with no owner.
The ticket will be disowned.
as The resolution will be set. Next status will be 'closed'.
The owner will be changed from (none) to anonymous. Next status will be 'assigned'.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.