diff options
Diffstat (limited to 'OpenSim/Region/CoreModules/Scripting/HttpRequest')
-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 d328eb3..9dac6b9 100644 --- a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs +++ b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs | |||
@@ -382,6 +382,10 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest | |||
382 | try | 382 | try |
383 | { | 383 | { |
384 | Request = (HttpWebRequest) WebRequest.Create(Url); | 384 | Request = (HttpWebRequest) WebRequest.Create(Url); |
385 | |||
386 | //This works around some buggy HTTP Servers like Lighttpd | ||
387 | Request.ServicePoint.Expect100Continue = false; | ||
388 | |||
385 | Request.Method = HttpMethod; | 389 | Request.Method = HttpMethod; |
386 | Request.ContentType = HttpMIMEType; | 390 | Request.ContentType = HttpMIMEType; |
387 | 391 | ||
@@ -458,15 +462,36 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest | |||
458 | 462 | ||
459 | // continue building the string | 463 | // continue building the string |
460 | sb.Append(tempString); | 464 | sb.Append(tempString); |
465 | if (sb.Length > 2048) | ||
466 | break; | ||
461 | } | 467 | } |
462 | } while (count > 0); // any more data to read? | 468 | } while (count > 0); // any more data to read? |
463 | 469 | ||
464 | ResponseBody = sb.ToString(); | 470 | ResponseBody = sb.ToString().Replace("\r", ""); |
465 | } | 471 | } |
466 | catch (Exception e) | 472 | catch (Exception e) |
467 | { | 473 | { |
468 | Status = (int)OSHttpStatusCode.ClientErrorJoker; | 474 | if (e is WebException && ((WebException)e).Status == WebExceptionStatus.ProtocolError) |
469 | ResponseBody = e.Message; | 475 | { |
476 | HttpWebResponse webRsp = (HttpWebResponse)((WebException)e).Response; | ||
477 | Status = (int)webRsp.StatusCode; | ||
478 | try | ||
479 | { | ||
480 | using (Stream responseStream = webRsp.GetResponseStream()) | ||
481 | { | ||
482 | ResponseBody = responseStream.GetStreamString(); | ||
483 | } | ||
484 | } | ||
485 | catch | ||
486 | { | ||
487 | ResponseBody = webRsp.StatusDescription; | ||
488 | } | ||
489 | } | ||
490 | else | ||
491 | { | ||
492 | Status = (int)OSHttpStatusCode.ClientErrorJoker; | ||
493 | ResponseBody = e.Message; | ||
494 | } | ||
470 | 495 | ||
471 | _finished = true; | 496 | _finished = true; |
472 | return; | 497 | return; |