• All submissions to this site are governed by Second Life Project Contribution Agreement. By submitting patches and other information using this site, you acknowledge that you have read, understood, and agreed to those terms.
MAINTENANCE ANNOUNCEMENT - JIRA will undergo maintenance starting 1:00am PDT through 3:00am on Saturday 2010.03.20. Please do not enter issues during this time as the system maybe restarted.
Issue Details (XML | Word | Printable)

Key: SVC-3348
Type: Bug Bug
Status: Closed Closed
Resolution: Cannot Reproduce
Priority: Major Major
Assignee: Unassigned
Reporter: Darien Caldwell
Votes: 1
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
2. Second Life Service - SVC

HTTP-In beta: HTTP transfers are limited to 1024 maximum characters

Created: 29/Oct/08 08:48 PM   Updated: 03/Dec/08 10:23 AM
Component/s: LSL HTTP
Affects Version/s: 1.25 Server
Fix Version/s: None

Time Tracking:
Not Specified

Issue Links:
Relates
 


 Description  « Hide
In the design documents here (http://wiki.secondlife.com/wiki/LSL_http_server), it states that "Size of the body of the requests will be limited to 2k bytes"

However I'm finding that the body is in fact limited to 1k byes due to the use of the LSL string type. LSL strings can not hold more than 1024 bytes.

Reproduction:

////////////////////////////////////////////////////////////////////////////////////////////////
Server
//////////////////////////////////////////////////////////////////////////////////////////////

key p;
string URL;

default
{
state_entry()

{ p=llRequestURL(); }

http_request(key id, string method, string body)
{
llOwnerSay("Key is:"+(string)id);

if (method == URL_REQUEST_GRANTED)

{ llOwnerSay("URL :" + body); URL=body; }

else if (method == URL_REQUEST_DENIED)

{ llOwnerSay("Something went wrong, no url. " + body); }

else if (method == "POST")

{ llHTTPResponse(id,200,"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse ultrices, felis nec volutpat sagittis, magna sapien sollicitudin pede, sed auctor augue quam sed odio. Fusce lacinia ipsum. In sit amet mi. Vivamus vitae neque non ligula imperdiet lacinia. Nullam ac ante. Nam euismod justo id mi. Nullam mollis neque vitae dolor. Proin malesuada nisl non lectus. Proin sed dolor nec nulla sodales semper. Nulla ut libero. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec ornare. Maecenas vehicula ipsum vitae ligula. Aliquam laoreet turpis in purus. Sed aliquam, augue non interdum tristique, felis magna vestibulum mi, pulvinar porttitor tortor turpis sed enim. Aliquam sed eros. Vestibulum eu mauris vel felis euismod ornare. Ut velit ipsum, convallis vitae, semper quis, tempus vitae, magna. In fringilla ultricies turpis. Donec cursus eros vel nisi. Nam tortor. Ut sapien. Maecenas sed nisi. Pellentesque viverra dictum dui. Duis lobortis velit ac dolor. Fusce nec massa. Donec vel dolor vitae quam tristique imperdiet. Nullam fringilla. Proin fermentum neque in tellus. Phasellus nec lectus mollis lectus ultricies tincidunt. Praesent velit massa, cursus nec, laoreet sed, sodales a, arcu. Donec dolor. Sed ac mi. Nunc id augue. Suspendisse gravida, ante sit amet varius vestibulum, nulla nunc iaculis justo, sit amet lobortis nulla elit at eros. In accumsan ornare est. Ut ante. Nam ornare neque vitae nisl congue malesuada. Vestibulum sit amet enim vitae eros mollis suscipit. Praesent ipsum velit, fringilla in, mattis eu, commodo et, nisl. Nunc rhoncus eros id nulla. Nulla enim justo, sagittis id, molestie non, ultrices in, magna. Praesent et leo vitae odio aliquam pellentesque. Aliquam justo risus, ultricies eget, tempus sit amet, convallis et, ipsum. Suspendisse sem. In non lorem. Nunc ultrices, libero non iaculis ultricies, est ligula blandit quam, vitae volutpat odio risus quis arcu. Nam orci elit, lobortis id, pretium ut, gravida et, justo. In fringilla rhoncus neque nullam."); }

}
}

///////////////////////////////////////////////////////////////////////////////
Client
/////////////////////////////////////////////////////////////////////////////

string URL="PASTE THE URL THE SERVER PROVIDES HERE";

key requestid;

default
{

touch_start(integer total_number)

{ requestid = llHTTPRequest(URL,[HTTP_METHOD, "POST",HTTP_MIMETYPE, "application/x-www-form-urlencoded"],"reg_id=request"); }

http_response(key request_id, integer status, list metadata, string body)
{

if (request_id == requestid)

{ llOwnerSay( "Web server said: " + body); }

}
}

The Lorem Ipsum text above is exactly 2K of text. You will note only half is transmitted.
I as well tried to concatenate two strings together and transmit that way, however that also failed, no doubt because the function parameter is still a single string:

llHTTPResponse(id,200,"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse ultrices, felis nec volutpat sagittis, magna sapien sollicitudin pede, sed auctor augue quam sed odio. Fusce lacinia ipsum. In sit amet mi. Vivamus vitae neque non ligula imperdiet lacinia. Nullam ac ante. Nam euismod justo id mi. Nullam mollis neque vitae dolor. Proin malesuada nisl non lectus. Proin sed dolor nec nulla sodales semper. Nulla ut libero. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec ornare. Maecenas vehicula ipsum vitae ligula. Aliquam laoreet turpis in purus. Sed aliquam, augue non interdum tristique, felis magna vestibulum mi, pulvinar porttitor tortor turpis sed enim. Aliquam sed eros. Vestibulum eu mauris vel felis euismod ornare. Ut velit ipsum, convallis vitae, semper quis, tempus vitae, magna. In fringilla ultricies turpis. Donec cursus eros vel nisi.
Nam tortor. Ut sapien. Maecenas sed nisi. Pellentesque viverra dictum dui. Duis lobortis velit ac d"+"olor. Fusce nec massa. Donec vel dolor vitae quam tristique imperdiet. Nullam fringilla. Proin fermentum neque in tellus. Phasellus nec lectus mollis lectus ultricies tincidunt. Praesent velit massa, cursus nec, laoreet sed, sodales a, arcu. Donec dolor. Sed ac mi. Nunc id augue. Suspendisse gravida, ante sit amet varius vestibulum, nulla nunc iaculis justo, sit amet lobortis nulla elit at eros. In accumsan ornare est.
Ut ante. Nam ornare neque vitae nisl congue malesuada. Vestibulum sit amet enim vitae eros mollis suscipit. Praesent ipsum velit, fringilla in, mattis eu, commodo et, nisl. Nunc rhoncus eros id nulla. Nulla enim justo, sagittis id, molestie non, ultrices in, magna. Praesent et leo vitae odio aliquam pellentesque. Aliquam justo risus, ultricies eget, tempus sit amet, convallis et, ipsum. Suspendisse sem. In non lorem. Nunc ultrices, libero non iaculis ultricies, est ligula blandit quam, vitae volutpat odio risus quis arcu. Nam orci elit, lobortis id, pretium ut, gravida et, justo. In fringilla rhoncus neque nullam.");

Given the limitations of LSL data types, the only reasonable solutions I can see would be to reduce max body size to 1024 byes or add a second body parameter which is concatenated on the server side before sending to the client. :| Or possibly use a List to as the datatype with each element in the list being concatenated as long as their sum is less than 2048 bytes. (this would actually be kind of useful)



 All   Comments   Work Log   Change History      Sort Order: Ascending order - Click to sort in descending order
kelly linden added a comment - 30/Oct/08 04:54 PM
LSL strings are not limited to 1k bytes.

There is a limit on the length of any one chat line (via llsay, llshout, llwhisper or llownersay), and llHTTPRequest has its own limits. If you use an external method such as curl to post or put data, you should be able to do 2k bytes. I have been able to in my tests.

Also important - that limitation is on the incoming body to http_request, not on what is returned via llHTTPResponse.


Darien Caldwell added a comment - 30/Oct/08 05:08 PM
Yes, You're right. I've been working with PHP more than LSL lately and forgot about the limit on llSay(). Sorry 'bout that.