Edgewall Software

Changes between Initial Version and Version 1 of Ticket #13354


Ignore:
Timestamp:
Mar 2, 2021, 4:44:06 PM (3 years ago)
Author:
Jun Omae
Comment:

It seems InterTracDispatcher with & characters is broken since 1.4.

$ curl -sv 'http://127.0.0.1:3000/1.5-sqlite/intertrac/query:owner=$USER&or&cc~=$USER' 2>&1 | grep -i 'Location:'
< Location: http://127.0.0.1:3000/1.5-sqlite/query?owner=%24USER&amp;or&amp;cc=~%24USER&amp;order=priority

$ curl -sv 'http://127.0.0.1:3000/1.4-sqlite/intertrac/query:owner=$USER&or&cc~=$USER' 2>&1 | grep -i 'Location:'
< Location: http://127.0.0.1:3000/1.4-sqlite/query?owner=%24USER&amp;or&amp;cc=~%24USER&amp;order=priority

$ curl -sv 'http://127.0.0.1:3000/1.2-sqlite/intertrac/query:owner=$USER&or&cc~=$USER' 2>&1 | grep -i 'Location:'
< Location: http://127.0.0.1:3000/1.2-sqlite/query?owner=%24USER&or&cc=~%24USER&order=priority

$ curl -sv 'http://127.0.0.1:3000/1.0-sqlite/intertrac/query:owner=$USER&or&cc~=$USER' 2>&1 | grep -i 'Location:'
< Location: http://127.0.0.1:3000/1.0-sqlite/query?owner=%24USER&or&cc=~%24USER&order=priority

Investigating with the following script:

import trac
print(trac.__version__)

from trac.test import EnvironmentStub, MockRequest
from trac.loader import load_components
from trac.web.api import RequestDone
from trac.web.chrome import web_context
from trac.wiki.formatter import extract_link
from trac.wiki.intertrac import InterTracDispatcher

def listener(*args):
    print(repr(args[1]))

env = EnvironmentStub()
load_components(env)
req = MockRequest(env, path_info='/intertrac/query:owner=$USER&or&cc~=$USER')
req.add_redirect_listener(listener)
context = web_context(req)
dispatcher = InterTracDispatcher(env)
dispatcher.match_request(req)
try:
    dispatcher.process_request(req)
except RequestDone:
    pass

Since 1.4, the component passes a Markup instance to req.redirect().

$ for i in ~/venv/trac/{1.0.20,1.2.6,1.4.2,1.5.2}/bin/python; do $i ./t13354.py; done
1.0.20
u'/trac.cgi/query?owner=%24USER&or&cc=~%24USER&order=priority'
1.2.6
u'/trac.cgi/query?owner=%24USER&or&cc=~%24USER&order=priority'
1.4.2
Markup(u'/trac.cgi/query?owner=%24USER&amp;or&amp;cc=~%24USER&amp;order=priority')
1.5.2
Markup('/trac.cgi/query?owner=%24USER&amp;or&amp;cc=~%24USER&amp;order=priority')

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #13354

    • Property Keywords intertrac added
    • Property Component query systemwiki system
    • Property Milestone 1.5.31.4.3
  • Ticket #13354 – Description

    initial v1  
    1 
    21{{{
    32======================================================================