Skip to content

Plus sign '+' in logical paths is incorrectly handled as spaces when creating empty folder #478

@MarekNieslanik

Description

@MarekNieslanik

When attempting to create a collection containing a plus sign (+) in its name via the iRODS HTTP API, the + character is incorrectly interpreted as a space. For example, a request to create a folder named a+b results in the creation of a folder named a b.

This behavior occurs even when the Content-Type is set to application/x-www-form-urlencoded. Since icommands (e.g., imkdir) handles these characters correctly, this appears to be an issue specifically within the HTTP API's decoding logic.

How to reproduce

import requests

data = {
    'op': 'create',
    'lpath': '/tempZone/home/rods/a+b'
}

r = requests.post(
    'http://<host>:<port>/irods-http-api/0.6.0/collections', 
    headers={
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/x-www-form-urlencoded',
    }, 
    data=data
)

result looks like this

# ils
  C- /tempZone/home/rods/a b

iRODS HTTP API Version: 0.6.0
iRODS Version 5.0.2

Metadata

Metadata

Assignees

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions