Squashed commit of the following:
commit 610ed879d57785cb0457f7f127889496d325f732 Author: Andreas Huber <andih@google.com> Date: Fri Nov 19 09:28:52 2010 -0800 HTTP header keys are to be treated case insensitive. Change-Id: I9690880528a6b0f611958de7996c2753948a03c3 commit 554a2499a293d8d53907d01d972a9cfe9b92738e Author: Andreas Huber <andih@google.com> Date: Fri Nov 19 09:22:45 2010 -0800 Remove one more legacy "string" implementation. Change-Id: I7638d849427a39bbc040082a8663b3b9b81a632b Change-Id: I626a60abdcd1dd6403be880dad4d0499d77ca71f
This commit is contained in:
@ -49,7 +49,6 @@ LOCAL_SRC_FILES:= \
|
||||
WVMExtractor.cpp \
|
||||
XINGSeeker.cpp \
|
||||
avc_utils.cpp \
|
||||
string.cpp
|
||||
|
||||
LOCAL_C_INCLUDES:= \
|
||||
$(JNI_H_INCLUDE) \
|
||||
|
@ -36,7 +36,7 @@
|
||||
namespace android {
|
||||
|
||||
// static
|
||||
const char *HTTPStream::kStatusKey = ":status:";
|
||||
const char *HTTPStream::kStatusKey = ":status:"; // MUST be lowercase.
|
||||
|
||||
HTTPStream::HTTPStream()
|
||||
: mState(READY),
|
||||
@ -220,7 +220,7 @@ status_t HTTPStream::receive_header(int *http_status) {
|
||||
return err;
|
||||
}
|
||||
|
||||
mHeaders.add(string(kStatusKey), string(line));
|
||||
mHeaders.add(AString(kStatusKey), AString(line));
|
||||
|
||||
char *spacePos = strchr(line, ' ');
|
||||
if (spacePos == NULL) {
|
||||
@ -264,7 +264,10 @@ status_t HTTPStream::receive_header(int *http_status) {
|
||||
|
||||
char *colonPos = strchr(line, ':');
|
||||
if (colonPos == NULL) {
|
||||
mHeaders.add(string(line), string());
|
||||
AString key = line;
|
||||
key.tolower();
|
||||
|
||||
mHeaders.add(key, AString());
|
||||
} else {
|
||||
char *end_of_key = colonPos;
|
||||
while (end_of_key > line && isspace(end_of_key[-1])) {
|
||||
@ -278,7 +281,10 @@ status_t HTTPStream::receive_header(int *http_status) {
|
||||
|
||||
*end_of_key = '\0';
|
||||
|
||||
mHeaders.add(string(line), string(start_of_value));
|
||||
AString key = line;
|
||||
key.tolower();
|
||||
|
||||
mHeaders.add(key, AString(start_of_value));
|
||||
}
|
||||
}
|
||||
|
||||
@ -314,8 +320,11 @@ ssize_t HTTPStream::receive(void *data, size_t size) {
|
||||
return (ssize_t)total;
|
||||
}
|
||||
|
||||
bool HTTPStream::find_header_value(const string &key, string *value) const {
|
||||
ssize_t index = mHeaders.indexOfKey(key);
|
||||
bool HTTPStream::find_header_value(const AString &key, AString *value) const {
|
||||
AString key_lower = key;
|
||||
key_lower.tolower();
|
||||
|
||||
ssize_t index = mHeaders.indexOfKey(key_lower);
|
||||
if (index < 0) {
|
||||
value->clear();
|
||||
return false;
|
||||
|
@ -178,7 +178,7 @@ status_t NuHTTPDataSource::connect(
|
||||
}
|
||||
|
||||
if (IsRedirectStatusCode(httpStatus)) {
|
||||
string value;
|
||||
AString value;
|
||||
CHECK(mHTTP.find_header_value("Location", &value));
|
||||
|
||||
mState = DISCONNECTED;
|
||||
@ -198,9 +198,8 @@ status_t NuHTTPDataSource::connect(
|
||||
mHasChunkedTransferEncoding = false;
|
||||
|
||||
{
|
||||
string value;
|
||||
if (mHTTP.find_header_value("Transfer-Encoding", &value)
|
||||
|| mHTTP.find_header_value("Transfer-encoding", &value)) {
|
||||
AString value;
|
||||
if (mHTTP.find_header_value("Transfer-Encoding", &value)) {
|
||||
// We don't currently support any transfer encodings but
|
||||
// chunked.
|
||||
|
||||
@ -222,9 +221,9 @@ status_t NuHTTPDataSource::connect(
|
||||
applyTimeoutResponse();
|
||||
|
||||
if (offset == 0) {
|
||||
string value;
|
||||
AString value;
|
||||
unsigned long x;
|
||||
if (mHTTP.find_header_value(string("Content-Length"), &value)
|
||||
if (mHTTP.find_header_value(AString("Content-Length"), &value)
|
||||
&& ParseSingleUnsignedLong(value.c_str(), &x)) {
|
||||
mContentLength = (off64_t)x;
|
||||
mContentLengthValid = true;
|
||||
@ -239,9 +238,9 @@ status_t NuHTTPDataSource::connect(
|
||||
return ERROR_UNSUPPORTED;
|
||||
}
|
||||
|
||||
string value;
|
||||
AString value;
|
||||
unsigned long x;
|
||||
if (mHTTP.find_header_value(string("Content-Range"), &value)) {
|
||||
if (mHTTP.find_header_value(AString("Content-Range"), &value)) {
|
||||
const char *slashPos = strchr(value.c_str(), '/');
|
||||
if (slashPos != NULL
|
||||
&& ParseSingleUnsignedLong(slashPos + 1, &x)) {
|
||||
@ -439,7 +438,7 @@ void NuHTTPDataSource::MakeFullHeaders(
|
||||
}
|
||||
|
||||
void NuHTTPDataSource::applyTimeoutResponse() {
|
||||
string timeout;
|
||||
AString timeout;
|
||||
if (mHTTP.find_header_value("X-SocketTimeout", &timeout)) {
|
||||
const char *s = timeout.c_str();
|
||||
char *end;
|
||||
|
@ -14,7 +14,6 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "include/stagefright_string.h"
|
||||
#include "include/HTTPStream.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
@ -34,7 +33,7 @@ ShoutcastSource::ShoutcastSource(HTTPStream *http)
|
||||
mBytesUntilMetaData(0),
|
||||
mGroup(NULL),
|
||||
mStarted(false) {
|
||||
string metaint;
|
||||
AString metaint;
|
||||
if (mHttp->find_header_value("icy-metaint", &metaint)) {
|
||||
char *end;
|
||||
const char *start = metaint.c_str();
|
||||
|
@ -18,10 +18,9 @@
|
||||
|
||||
#define HTTP_STREAM_H_
|
||||
|
||||
#include "stagefright_string.h"
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <media/stagefright/foundation/AString.h>
|
||||
#include <media/stagefright/MediaErrors.h>
|
||||
#include <utils/KeyedVector.h>
|
||||
#include <utils/threads.h>
|
||||
@ -50,7 +49,7 @@ public:
|
||||
static const char *kStatusKey;
|
||||
|
||||
bool find_header_value(
|
||||
const string &key, string *value) const;
|
||||
const AString &key, AString *value) const;
|
||||
|
||||
// Pass a negative value to disable the timeout.
|
||||
void setReceiveTimeout(int seconds);
|
||||
@ -70,7 +69,7 @@ private:
|
||||
Mutex mLock;
|
||||
int mSocket;
|
||||
|
||||
KeyedVector<string, string> mHeaders;
|
||||
KeyedVector<AString, AString> mHeaders;
|
||||
|
||||
HTTPStream(const HTTPStream &);
|
||||
HTTPStream &operator=(const HTTPStream &);
|
||||
|
@ -1,54 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2009 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef STRING_H_
|
||||
|
||||
#define STRING_H_
|
||||
|
||||
#include <utils/String8.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
class string {
|
||||
public:
|
||||
typedef size_t size_type;
|
||||
static size_type npos;
|
||||
|
||||
string();
|
||||
string(const char *s);
|
||||
string(const char *s, size_t length);
|
||||
string(const string &from, size_type start, size_type length = npos);
|
||||
|
||||
const char *c_str() const;
|
||||
size_type size() const;
|
||||
|
||||
void clear();
|
||||
void erase(size_type from, size_type length);
|
||||
|
||||
size_type find(char c) const;
|
||||
|
||||
bool operator<(const string &other) const;
|
||||
bool operator==(const string &other) const;
|
||||
|
||||
string &operator+=(char c);
|
||||
|
||||
private:
|
||||
String8 mString;
|
||||
};
|
||||
|
||||
} // namespace android
|
||||
|
||||
#endif // STRING_H_
|
@ -1,92 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2009 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "include/stagefright_string.h"
|
||||
|
||||
#include <media/stagefright/MediaDebug.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
// static
|
||||
string::size_type string::npos = (string::size_type)-1;
|
||||
|
||||
string::string() {
|
||||
}
|
||||
|
||||
string::string(const char *s, size_t length)
|
||||
: mString(s, length) {
|
||||
}
|
||||
|
||||
string::string(const string &from, size_type start, size_type length) {
|
||||
CHECK(start <= from.size());
|
||||
if (length == npos) {
|
||||
length = from.size() - start;
|
||||
} else {
|
||||
CHECK(start + length <= from.size());
|
||||
}
|
||||
|
||||
mString.setTo(from.c_str() + start, length);
|
||||
}
|
||||
|
||||
string::string(const char *s)
|
||||
: mString(s) {
|
||||
}
|
||||
|
||||
const char *string::c_str() const {
|
||||
return mString.string();
|
||||
}
|
||||
|
||||
string::size_type string::size() const {
|
||||
return mString.length();
|
||||
}
|
||||
|
||||
void string::clear() {
|
||||
mString = String8();
|
||||
}
|
||||
|
||||
string::size_type string::find(char c) const {
|
||||
char s[2];
|
||||
s[0] = c;
|
||||
s[1] = '\0';
|
||||
|
||||
ssize_t index = mString.find(s);
|
||||
|
||||
return index < 0 ? npos : (size_type)index;
|
||||
}
|
||||
|
||||
bool string::operator<(const string &other) const {
|
||||
return mString < other.mString;
|
||||
}
|
||||
|
||||
bool string::operator==(const string &other) const {
|
||||
return mString == other.mString;
|
||||
}
|
||||
|
||||
string &string::operator+=(char c) {
|
||||
mString.append(&c, 1);
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
void string::erase(size_t from, size_t length) {
|
||||
String8 s(mString.string(), from);
|
||||
s.append(mString.string() + from + length);
|
||||
|
||||
mString = s;
|
||||
}
|
||||
|
||||
} // namespace android
|
||||
|
Reference in New Issue
Block a user