diff options
Diffstat (limited to 'OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs')
-rw-r--r-- | OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs index a676971..a0ae203 100644 --- a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs +++ b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs | |||
@@ -398,6 +398,10 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest | |||
398 | try | 398 | try |
399 | { | 399 | { |
400 | Request = (HttpWebRequest) WebRequest.Create(Url); | 400 | Request = (HttpWebRequest) WebRequest.Create(Url); |
401 | |||
402 | //This works around some buggy HTTP Servers like Lighttpd | ||
403 | Request.ServicePoint.Expect100Continue = false; | ||
404 | |||
401 | Request.Method = HttpMethod; | 405 | Request.Method = HttpMethod; |
402 | Request.ContentType = HttpMIMEType; | 406 | Request.ContentType = HttpMIMEType; |
403 | 407 | ||
@@ -474,15 +478,36 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest | |||
474 | 478 | ||
475 | // continue building the string | 479 | // continue building the string |
476 | sb.Append(tempString); | 480 | sb.Append(tempString); |
481 | if (sb.Length > 2048) | ||
482 | break; | ||
477 | } | 483 | } |
478 | } while (count > 0); // any more data to read? | 484 | } while (count > 0); // any more data to read? |
479 | 485 | ||
480 | ResponseBody = sb.ToString(); | 486 | ResponseBody = sb.ToString().Replace("\r", ""); |
481 | } | 487 | } |
482 | catch (Exception e) | 488 | catch (Exception e) |
483 | { | 489 | { |
484 | Status = (int)OSHttpStatusCode.ClientErrorJoker; | 490 | if (e is WebException && ((WebException)e).Status == WebExceptionStatus.ProtocolError) |
485 | ResponseBody = e.Message; | 491 | { |
492 | HttpWebResponse webRsp = (HttpWebResponse)((WebException)e).Response; | ||
493 | Status = (int)webRsp.StatusCode; | ||
494 | try | ||
495 | { | ||
496 | using (Stream responseStream = webRsp.GetResponseStream()) | ||
497 | { | ||
498 | ResponseBody = responseStream.GetStreamString(); | ||
499 | } | ||
500 | } | ||
501 | catch | ||
502 | { | ||
503 | ResponseBody = webRsp.StatusDescription; | ||
504 | } | ||
505 | } | ||
506 | else | ||
507 | { | ||
508 | Status = (int)OSHttpStatusCode.ClientErrorJoker; | ||
509 | ResponseBody = e.Message; | ||
510 | } | ||
486 | 511 | ||
487 | _finished = true; | 512 | _finished = true; |
488 | return; | 513 | return; |