Skip to content
This repository has been archived by the owner on Mar 28, 2024. It is now read-only.

[BUG-230881] llHttpRequest(): HTTP_CUSTOM_HEADER flag is ignored #8456

Closed
sl-service-account opened this issue Jun 23, 2021 · 1 comment
Closed

Comments

@sl-service-account
Copy link

What just happened?

In Second Life Server 2021-06-16.560618, a call to llHttpRequest() with a HTTP_CUSTOM_HEADER does not send the custom header.

What were you doing when it happened?

Repro:

  1. Run the following script, and note the output:

    • key http_request_id;
       
      default
      {
          state_entry()
          {
              http_request_id = llHTTPRequest("http://scooterlabs.com/echo", [HTTP_CUSTOM_HEADER, "Sausage", "Spicy"], "");
              // llHTTPRequest("http://scooterlabs.com/echo", [HTTP_CUSTOM_HEADER, "Sausage", "Spicy", HTTP_PRAGMA_NO_CACHE, FALSE], "");
          }
       
          http_response(key request_id, integer status, list metadata, string body)
          {
              if (request_id != http_request_id) return;// exit if unknown
       
              llSay(0, "Got http response with body length: " + (string)llStringLength(body));
              integer i;
              integer messageSize = 900;
              for(i = 0; i < llStringLength(body); i += messageSize)
              {
                  llSay(0, "\n### Chunk " + (string)(i/messageSize) + " starting at response byte position " + (string)i + " :###\n" + llGetSubString(body, i, i + messageSize - 1));
              }
          }
      }
    • http://scooterlabs.com/echo is a special service which echoes an http client's headers in the response body
  2. Note if the headers shown in the response body include "Sausage" with value "Spicy"

    In 2021-06-16.560618, no Sausage header is shown; the output is {code}Got http response with body length: 1919
    [10:28] Object:

Chunk 0 starting at response byte position 0 :###

Simple webservice echo test: make a request to this endpoint to return the HTTP request parameters and headers. Results available in plain text, JSON, or XML formats. See http://www.cantoni.org/2012/01/08/simple-webservice-echo-test for more details, or https://github.com/bcantoni/echotest for source code.

Array
(
[method] => GET
[headers] => Array
(
[Via] => http/1.1 localhost[84afee23-5581-4314-9e82-a2c8bcd7ef9a] (ApacheTrafficServer/7.1.6)
[Connection] => close
[X-Secondlife-Shard] => Production
[X-Secondlife-Region] => BlueSteel Sandbox 1 (336640, 305664)
[X-Secondlife-Owner-Name] => Maestro Linden
[X-Secondlife-Owner-Key] => e1a51880-d7b5-4c00-800d-91664f5b84c0
[X-Secondlife-Object-Name] => Object
[X-Secondlife-Object-Key] => e9c43269-6174-d85e-be95-2301d88de51f

[10:28] Object:

Chunk 1 starting at response byte position 900 :###

[X-Secondlife-Local-Velocity] => (0.000000, 0.000000, 0.000000)
[X-Secondlife-Local-Rotation] => (0.000000, 0.000000, 0.707107, 0.707107)
[X-Secondlife-Local-Position] => (128.000000, 128.000000, 24.022707)
[User-Agent] => Second-Life-LSL/2021-06-16.560618 (https://secondlife.com)
[Pragma] => no-cache
[Cache-Control] => no-cache, max-age=0
[Accept-Charset] => utf-8;q=1.0, *;q=0.5
[Accept] => text/*, application/xhtml+xml, application/atom+xml, application/json, application/xml, application/llsd+xml, application/x-javascript, application/javascript, application/x-www-form-urlencoded, application/rss+xml
[Accept-Encoding] => deflate, gzip
[Host] => scooterlabs.com
[Authorization] =>
)

[request] => Array
    (
    )

[client_ip] => 52.27.17.204

[10:28] Object:

Chunk 2 starting at response byte position 1800 :###

[time_utc] => 2021-06-23T17:28:58+0000
[info] => Echo service from Scooterlabs (http://www.scooterlabs.com)

)```Java

h2. What were you expecting to happen instead?
Output should more or less what the script produces in Second Life Server 2021-05-25.560108, which is:

[10:36] Object: 
### Chunk 0 starting at response byte position 0 :###
Simple webservice echo test: make a request to this endpoint to return the HTTP request parameters and headers. Results available in plain text, JSON, or XML formats. See http://www.cantoni.org/2012/01/08/simple-webservice-echo-test for more details, or https://github.com/bcantoni/echotest for source code.

Array
(
    [method] => GET
    [headers] => Array
        (
            [Via] => http/1.1 localhost[d76b550e-27f3-4859-b661-86ad6d52b957] (ApacheTrafficServer/7.1.6)
            [Connection] => close
            [X-Secondlife-Shard] => Production
            [X-Secondlife-Region] => By Design (261376, 246784)
            [X-Secondlife-Owner-Name] => Maestro Linden
            [X-Secondlife-Owner-Key] => e1a51880-d7b5-4c00-800d-91664f5b84c0
            [X-Secondlife-Object-Name] => Object
            [X-Secondlife-Object-Key] => e9c43269-6174-d85e-be95-2301d88de51f
            [X-Seco
[10:36] Object: 
### Chunk 1 starting at response byte position 900 :###
ndlife-Local-Velocity] => (0.000000, 0.000000, -28.651361)
            [X-Secondlife-Local-Rotation] => (0.000000, 0.000000, 0.707107, 0.707107)
            [X-Secondlife-Local-Position] => (224.000000, 96.000000, 2054.722900)
            [User-Agent] => Second-Life-LSL/2021-05-25.560108 (https://secondlife.com)
            [Sausage] => Spicy
            [Pragma] => no-cache
            [Accept-Charset] => utf-8;q=1.0, \*;q=0.5
            [Accept] => text/\*, application/xhtml+xml, application/atom+xml, application/json, application/xml, application/llsd+xml, application/x-javascript, application/javascript, application/x-www-form-urlencoded, application/rss+xml
            [Accept-Encoding] => deflate, gzip
            [Host] => scooterlabs.com
            [Authorization] => 
        )

    [request] => Array
        (
        )

    [client_ip] => 54.202.250.251
    [time_utc] => 2021-0
[10:36] Object: 
### Chunk 2 starting at response byte position 1800 :###
6-23T17:36:39+0000
    [info] => Echo service from Scooterlabs (http://www.scooterlabs.com)
){code} 

# Other information
 

<details>
<summary>Original Jira Fields</summary>

| Field          | Value         |
| ------------- | ------------- |
| Issue         | BUG-230881 |
| Summary       | llHttpRequest(): HTTP_CUSTOM_HEADER flag is ignored |
| Type          | Bug |
| Priority      | Unset |
| Status        | Closed |
| Resolution    | Triaged |
| Reporter      | Maestro Linden (maestro.linden) |
| Created at    | 2021-06-23T17:38:09Z |
| Updated at    | 2021-07-06T15:29:15Z |

{
'Build Id': 'unset',
'Business Unit': ['Platform'],
'ReOpened Count': 0.0,
'Severity': 'Unset',
'System': 'SL Simulator',
'Target Viewer Version': 'viewer-development',
'What just happened?': 'In Second Life Server 2021-06-16.560618, a call to llHttpRequest() with a HTTP_CUSTOM_HEADER does not send the custom header.',
'What were you doing when it happened?': 'Repro:\r\n# Run the following script, and note the output:\r\n#* {code}key http_request_id;\r\n \r\ndefault\r\n{\r\n state_entry()\r\n {\r\n http_request_id = llHTTPRequest("http://scooterlabs.com/echo", [HTTP_CUSTOM_HEADER, "Sausage", "Spicy"], "");\r\n // llHTTPRequest("http://scooterlabs.com/echo", [HTTP_CUSTOM_HEADER, "Sausage", "Spicy", HTTP_PRAGMA_NO_CACHE, FALSE], "");\r\n }\r\n \r\n http_response(key request_id, integer status, list metadata, string body)\r\n {\r\n if (request_id != http_request_id) return;// exit if unknown\r\n \r\n llSay(0, "Got http response with body length: " + (string)llStringLength(body));\r\n integer i;\r\n integer messageSize = 900;\r\n for(i = 0; i < llStringLength(body); i += messageSize)\r\n {\r\n llSay(0, "\n### Chunk " + (string)(i/messageSize) + " starting at response byte position " + (string)i + " :###\n" + llGetSubString(body, i, i + messageSize - 1));\r\n }\r\n }\r\n}{code}\r\n#* http://scooterlabs.com/echo is a special service which echoes an http client's headers in the response body\r\n# Note if the headers shown in the response body include "Sausage" with value "Spicy"\r\n\r\nIn 2021-06-16.560618, no Sausage header is shown; the output is {code}Got http response with body length: 1919\r\n[10:28] Object: \r\n### Chunk 0 starting at response byte position 0 :###\r\nSimple webservice echo test: make a request to this endpoint to return the HTTP request parameters and headers. Results available in plain text, JSON, or XML formats. See http://www.cantoni.org/2012/01/08/simple-webservice-echo-test for more details, or https://github.com/bcantoni/echotest for source code.\r\n\r\nArray\r\n(\r\n [method] => GET\r\n [headers] => Array\r\n (\r\n [Via] => http/1.1 localhost[84afee23-5581-4314-9e82-a2c8bcd7ef9a] (ApacheTrafficServer/7.1.6)\r\n [Connection] => close\r\n [X-Secondlife-Shard] => Production\r\n [X-Secondlife-Region] => BlueSteel Sandbox 1 (336640, 305664)\r\n [X-Secondlife-Owner-Name] => Maestro Linden\r\n [X-Secondlife-Owner-Key] => e1a51880-d7b5-4c00-800d-91664f5b84c0\r\n [X-Secondlife-Object-Name] => Object\r\n [X-Secondlife-Object-Key] => e9c43269-6174-d85e-be95-2301d88de51f\r\n \r\n[10:28] Object: \r\n### Chunk 1 starting at response byte position 900 :###\r\n [X-Secondlife-Local-Velocity] => (0.000000, 0.000000, 0.000000)\r\n [X-Secondlife-Local-Rotation] => (0.000000, 0.000000, 0.707107, 0.707107)\r\n [X-Secondlife-Local-Position] => (128.000000, 128.000000, 24.022707)\r\n [User-Agent] => Second-Life-LSL/2021-06-16.560618 (https://secondlife.com)\r\n [Pragma] => no-cache\r\n [Cache-Control] => no-cache, max-age=0\r\n [Accept-Charset] => utf-8;q=1.0, ;q=0.5\r\n [Accept] => text/, application/xhtml+xml, application/atom+xml, application/json, application/xml, application/llsd+xml, application/x-javascript, application/javascript, application/x-www-form-urlencoded, application/rss+xml\r\n [Accept-Encoding] => deflate, gzip\r\n [Host] => scooterlabs.com\r\n [Authorization] => \r\n )\r\n\r\n [request] => Array\r\n (\r\n )\r\n\r\n [client_ip] => 52.27.17.204\r\n[10:28] Object: \r\n### Chunk 2 starting at response byte position 1800 :###\r\n\r\n [time_utc] => 2021-06-23T17:28:58+0000\r\n [info] => Echo service from Scooterlabs (http://www.scooterlabs.com)\r\n){code}',
'What were you expecting to happen instead?': 'Output should more or less what the script produces in Second Life Server 2021-05-25.560108, which is:\r\n{code}Got http response with body length: 1894\r\n[10:36] Object: \r\n### Chunk 0 starting at response byte position 0 :###\r\nSimple webservice echo test: make a request to this endpoint to return the HTTP request parameters and headers. Results available in plain text, JSON, or XML formats. See http://www.cantoni.org/2012/01/08/simple-webservice-echo-test for more details, or https://github.com/bcantoni/echotest for source code.\r\n\r\nArray\r\n(\r\n [method] => GET\r\n [headers] => Array\r\n (\r\n [Via] => http/1.1 localhost[d76b550e-27f3-4859-b661-86ad6d52b957] (ApacheTrafficServer/7.1.6)\r\n [Connection] => close\r\n [X-Secondlife-Shard] => Production\r\n [X-Secondlife-Region] => By Design (261376, 246784)\r\n [X-Secondlife-Owner-Name] => Maestro Linden\r\n [X-Secondlife-Owner-Key] => e1a51880-d7b5-4c00-800d-91664f5b84c0\r\n [X-Secondlife-Object-Name] => Object\r\n [X-Secondlife-Object-Key] => e9c43269-6174-d85e-be95-2301d88de51f\r\n [X-Seco\r\n[10:36] Object: \r\n### Chunk 1 starting at response byte position 900 :###\r\nndlife-Local-Velocity] => (0.000000, 0.000000, -28.651361)\r\n [X-Secondlife-Local-Rotation] => (0.000000, 0.000000, 0.707107, 0.707107)\r\n [X-Secondlife-Local-Position] => (224.000000, 96.000000, 2054.722900)\r\n [User-Agent] => Second-Life-LSL/2021-05-25.560108 (https://secondlife.com)\r\n [Sausage] => Spicy\r\n [Pragma] => no-cache\r\n [Accept-Charset] => utf-8;q=1.0, ;q=0.5\r\n [Accept] => text/, application/xhtml+xml, application/atom+xml, application/json, application/xml, application/llsd+xml, application/x-javascript, application/javascript, application/x-www-form-urlencoded, application/rss+xml\r\n [Accept-Encoding] => deflate, gzip\r\n [Host] => scooterlabs.com\r\n [Authorization] => \r\n )\r\n\r\n [request] => Array\r\n (\r\n )\r\n\r\n [client_ip] => 54.202.250.251\r\n [time_utc] => 2021-0\r\n[10:36] Object: \r\n### Chunk 2 starting at response byte position 1800 :###\r\n6-23T17:36:39+0000\r\n [info] => Echo service from Scooterlabs (http://www.scooterlabs.com)\r\n){code}',
}


</details>
@sl-service-account
Copy link
Author

Maestro Linden commented at 2021-06-23T18:08:00Z

This bug is triggering the Second Life Server 2021-06-16.560618 rollback from RC

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant