| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 2 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
| 3 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. | 3 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. |
| 4 * Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/ | 4 * Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/ |
| 5 * Copyright (C) 2009 Google Inc. All rights reserved. | 5 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 6 * Copyright (C) 2011 Apple Inc. All Rights Reserved. | 6 * Copyright (C) 2011 Apple Inc. All Rights Reserved. |
| 7 * | 7 * |
| 8 * Redistribution and use in source and binary forms, with or without | 8 * Redistribution and use in source and binary forms, with or without |
| 9 * modification, are permitted provided that the following conditions | 9 * modification, are permitted provided that the following conditions |
| 10 * are met: | 10 * are met: |
| (...skipping 650 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 661 failureReason = "LF doesn't follow CR after value at " + trimInputSample
(&s[i + 1], size - i - 1); | 661 failureReason = "LF doesn't follow CR after value at " + trimInputSample
(&s[i + 1], size - i - 1); |
| 662 return false; | 662 return false; |
| 663 } | 663 } |
| 664 | 664 |
| 665 *value = AtomicString::fromUTF8(&s[valueBegin], i - valueBegin); | 665 *value = AtomicString::fromUTF8(&s[valueBegin], i - valueBegin); |
| 666 if (i != valueBegin && value->isNull()) { | 666 if (i != valueBegin && value->isNull()) { |
| 667 failureReason = "Invalid UTF-8 sequence in header value"; | 667 failureReason = "Invalid UTF-8 sequence in header value"; |
| 668 return false; | 668 return false; |
| 669 } | 669 } |
| 670 | 670 |
| 671 *position = i + 1; | 671 // 2 for strlen("\r\n") |
| 672 *position = i + 2; |
| 672 return true; | 673 return true; |
| 673 } | 674 } |
| 674 | 675 |
| 675 // Note that the header is already parsed and re-formatted in chromium side. | 676 // Note that the header is already parsed and re-formatted in chromium side. |
| 676 // We assume that the input is more restricted than RFC2616. | 677 // We assume that the input is more restricted than RFC2616. |
| 677 size_t parseHTTPHeader(const char* s, size_t size, String& failureReason, Atomic
String& name, AtomicString& value) | 678 size_t parseHTTPHeader(const char* s, size_t size, String& failureReason, Atomic
String& name, AtomicString& value) |
| 678 { | 679 { |
| 679 name = nullAtom; | 680 name = nullAtom; |
| 680 value = nullAtom; | 681 value = nullAtom; |
| 681 if (size >= 1 && s[0] == '\r') { | 682 if (size >= 1 && s[0] == '\r') { |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 844 if (!cacheControlHeader.containsNoCache) { | 845 if (!cacheControlHeader.containsNoCache) { |
| 845 // Handle Pragma: no-cache | 846 // Handle Pragma: no-cache |
| 846 // This is deprecated and equivalent to Cache-control: no-cache | 847 // This is deprecated and equivalent to Cache-control: no-cache |
| 847 // Don't bother tokenizing the value, it is not important | 848 // Don't bother tokenizing the value, it is not important |
| 848 cacheControlHeader.containsNoCache = pragmaValue.lower().contains(noCach
eDirective); | 849 cacheControlHeader.containsNoCache = pragmaValue.lower().contains(noCach
eDirective); |
| 849 } | 850 } |
| 850 return cacheControlHeader; | 851 return cacheControlHeader; |
| 851 } | 852 } |
| 852 | 853 |
| 853 } | 854 } |
| OLD | NEW |