From cd77d4a1d38b7609a03f6826a1ff5fa7c98aa34f Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Tue, 26 Mar 2013 10:19:24 -0700 Subject: [PATCH] Identify network servers and clients with a OS version related string and put the logic to create that string in one location instead of many... Change-Id: I1f729f2e7376cd3b45eea0e48f7bd10084b41b39 --- include/media/stagefright/Utils.h | 3 +++ media/libstagefright/Utils.cpp | 17 ++++++++++++++- media/libstagefright/chromium_http/support.cpp | 16 ++------------ media/libstagefright/rtsp/ARTSPConnection.cpp | 25 ++++++---------------- media/libstagefright/rtsp/ARTSPConnection.h | 6 ++---- media/libstagefright/rtsp/MyHandler.h | 18 ++-------------- .../wifi-display/sink/WifiDisplaySink.cpp | 6 +++++- .../wifi-display/sink/WifiDisplaySink.h | 2 ++ .../wifi-display/source/WifiDisplaySource.cpp | 6 +++++- .../wifi-display/source/WifiDisplaySource.h | 2 ++ 10 files changed, 45 insertions(+), 56 deletions(-) diff --git a/include/media/stagefright/Utils.h b/include/media/stagefright/Utils.h index 8213af964d..73940d3586 100644 --- a/include/media/stagefright/Utils.h +++ b/include/media/stagefright/Utils.h @@ -18,6 +18,7 @@ #define UTILS_H_ +#include #include #include #include @@ -45,6 +46,8 @@ status_t convertMetaDataToMessage( void convertMessageToMetaData( const sp &format, sp &meta); +AString MakeUserAgent(); + } // namespace android #endif // UTILS_H_ diff --git a/media/libstagefright/Utils.cpp b/media/libstagefright/Utils.cpp index 8ed07bf288..b0df379426 100644 --- a/media/libstagefright/Utils.cpp +++ b/media/libstagefright/Utils.cpp @@ -21,7 +21,7 @@ #include "include/ESDS.h" #include - +#include #include #include #include @@ -455,6 +455,21 @@ void convertMessageToMetaData(const sp &msg, sp &meta) { #endif } +AString MakeUserAgent() { + AString ua; + ua.append("stagefright/1.2 (Linux;Android "); + +#if (PROPERTY_VALUE_MAX < 8) +#error "PROPERTY_VALUE_MAX must be at least 8" +#endif + + char value[PROPERTY_VALUE_MAX]; + property_get("ro.build.version.release", value, "Unknown"); + ua.append(value); + ua.append(")"); + + return ua; +} } // namespace android diff --git a/media/libstagefright/chromium_http/support.cpp b/media/libstagefright/chromium_http/support.cpp index 13ae3dfd42..832e86da46 100644 --- a/media/libstagefright/chromium_http/support.cpp +++ b/media/libstagefright/chromium_http/support.cpp @@ -36,8 +36,8 @@ #include "include/ChromiumHTTPDataSource.h" #include -#include #include +#include #include namespace android { @@ -156,19 +156,7 @@ net::NetLog::LogLevel SfNetLog::GetLogLevel() const { //////////////////////////////////////////////////////////////////////////////// SfRequestContext::SfRequestContext() { - AString ua; - ua.append("stagefright/1.2 (Linux;Android "); - -#if (PROPERTY_VALUE_MAX < 8) -#error "PROPERTY_VALUE_MAX must be at least 8" -#endif - - char value[PROPERTY_VALUE_MAX]; - property_get("ro.build.version.release", value, "Unknown"); - ua.append(value); - ua.append(")"); - - mUserAgent = ua.c_str(); + mUserAgent = MakeUserAgent().c_str(); set_net_log(new SfNetLog()); diff --git a/media/libstagefright/rtsp/ARTSPConnection.cpp b/media/libstagefright/rtsp/ARTSPConnection.cpp index 161bd4fb8e..3068541b7c 100644 --- a/media/libstagefright/rtsp/ARTSPConnection.cpp +++ b/media/libstagefright/rtsp/ARTSPConnection.cpp @@ -20,13 +20,12 @@ #include "ARTSPConnection.h" -#include - #include #include #include #include #include +#include #include #include @@ -41,6 +40,10 @@ namespace android { // static const int64_t ARTSPConnection::kSelectTimeoutUs = 1000ll; +// static +const AString ARTSPConnection::sUserAgent = + StringPrintf("User-Agent: %s\r\n", MakeUserAgent().c_str()); + ARTSPConnection::ARTSPConnection(bool uidValid, uid_t uid) : mUIDValid(uidValid), mUID(uid), @@ -50,7 +53,6 @@ ARTSPConnection::ARTSPConnection(bool uidValid, uid_t uid) mConnectionID(0), mNextCSeq(0), mReceiveResponseEventPending(false) { - MakeUserAgent(&mUserAgent); } ARTSPConnection::~ARTSPConnection() { @@ -1032,27 +1034,12 @@ void ARTSPConnection::addAuthentication(AString *request) { #endif } -// static -void ARTSPConnection::MakeUserAgent(AString *userAgent) { - userAgent->clear(); - userAgent->setTo("User-Agent: stagefright/1.1 (Linux;Android "); - -#if (PROPERTY_VALUE_MAX < 8) -#error "PROPERTY_VALUE_MAX must be at least 8" -#endif - - char value[PROPERTY_VALUE_MAX]; - property_get("ro.build.version.release", value, "Unknown"); - userAgent->append(value); - userAgent->append(")\r\n"); -} - void ARTSPConnection::addUserAgent(AString *request) const { // Find the boundary between headers and the body. ssize_t i = request->find("\r\n\r\n"); CHECK_GE(i, 0); - request->insert(mUserAgent, i + 2); + request->insert(sUserAgent, i + 2); } } // namespace android diff --git a/media/libstagefright/rtsp/ARTSPConnection.h b/media/libstagefright/rtsp/ARTSPConnection.h index 68f2d59ea8..1fe9c99f45 100644 --- a/media/libstagefright/rtsp/ARTSPConnection.h +++ b/media/libstagefright/rtsp/ARTSPConnection.h @@ -74,6 +74,8 @@ private: static const int64_t kSelectTimeoutUs; + static const AString sUserAgent; + bool mUIDValid; uid_t mUID; State mState; @@ -89,8 +91,6 @@ private: sp mObserveBinaryMessage; - AString mUserAgent; - void performDisconnect(); void onConnect(const sp &msg); @@ -122,8 +122,6 @@ private: static bool ParseSingleUnsignedLong( const char *from, unsigned long *x); - static void MakeUserAgent(AString *userAgent); - DISALLOW_EVIL_CONSTRUCTORS(ARTSPConnection); }; diff --git a/media/libstagefright/rtsp/MyHandler.h b/media/libstagefright/rtsp/MyHandler.h index 95ed43a99f..e067e20971 100644 --- a/media/libstagefright/rtsp/MyHandler.h +++ b/media/libstagefright/rtsp/MyHandler.h @@ -28,13 +28,13 @@ #include "ASessionDescription.h" #include -#include #include #include #include #include #include +#include #include #include @@ -56,19 +56,6 @@ static int64_t kPauseDelayUs = 3000000ll; namespace android { -static void MakeUserAgentString(AString *s) { - s->setTo("stagefright/1.1 (Linux;Android "); - -#if (PROPERTY_VALUE_MAX < 8) -#error "PROPERTY_VALUE_MAX must be at least 8" -#endif - - char value[PROPERTY_VALUE_MAX]; - property_get("ro.build.version.release", value, "Unknown"); - s->append(value); - s->append(")"); -} - static bool GetAttribute(const char *s, const char *key, AString *value) { value->clear(); @@ -279,8 +266,7 @@ struct MyHandler : public AHandler { data[offset++] = 6; // TOOL - AString tool; - MakeUserAgentString(&tool); + AString tool = MakeUserAgent(); data[offset++] = tool.size(); diff --git a/media/libstagefright/wifi-display/sink/WifiDisplaySink.cpp b/media/libstagefright/wifi-display/sink/WifiDisplaySink.cpp index f45a47fa09..1a08bf567b 100644 --- a/media/libstagefright/wifi-display/sink/WifiDisplaySink.cpp +++ b/media/libstagefright/wifi-display/sink/WifiDisplaySink.cpp @@ -30,9 +30,13 @@ #include #include #include +#include namespace android { +// static +const AString WifiDisplaySink::sUserAgent = MakeUserAgent(); + WifiDisplaySink::WifiDisplaySink( uint32_t flags, const sp &netSession, @@ -892,7 +896,7 @@ void WifiDisplaySink::AppendCommonResponse(AString *response, int32_t cseq) { response->append(buf); response->append("\r\n"); - response->append("User-Agent: stagefright/1.1 (Linux;Android 4.1)\r\n"); + response->append(StringPrintf("User-Agent: %s\r\n", sUserAgent.c_str())); if (cseq >= 0) { response->append(StringPrintf("CSeq: %d\r\n", cseq)); diff --git a/media/libstagefright/wifi-display/sink/WifiDisplaySink.h b/media/libstagefright/wifi-display/sink/WifiDisplaySink.h index 4587fb5acb..7c620577a5 100644 --- a/media/libstagefright/wifi-display/sink/WifiDisplaySink.h +++ b/media/libstagefright/wifi-display/sink/WifiDisplaySink.h @@ -96,6 +96,8 @@ private: static const int64_t kReportLatenessEveryUs = 1000000ll; + static const AString sUserAgent; + State mState; uint32_t mFlags; VideoFormats mSinkSupportedVideoFormats; diff --git a/media/libstagefright/wifi-display/source/WifiDisplaySource.cpp b/media/libstagefright/wifi-display/source/WifiDisplaySource.cpp index f2e659a385..792a9c5bfa 100644 --- a/media/libstagefright/wifi-display/source/WifiDisplaySource.cpp +++ b/media/libstagefright/wifi-display/source/WifiDisplaySource.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include #include @@ -42,6 +43,9 @@ namespace android { +// static +const AString WifiDisplaySource::sUserAgent = MakeUserAgent(); + WifiDisplaySource::WifiDisplaySource( const sp &netSession, const sp &client, @@ -1559,7 +1563,7 @@ void WifiDisplaySource::AppendCommonResponse( response->append(buf); response->append("\r\n"); - response->append("Server: Mine/1.0\r\n"); + response->append(StringPrintf("Server: %s\r\n", sUserAgent.c_str())); if (cseq >= 0) { response->append(StringPrintf("CSeq: %d\r\n", cseq)); diff --git a/media/libstagefright/wifi-display/source/WifiDisplaySource.h b/media/libstagefright/wifi-display/source/WifiDisplaySource.h index 3a1b0f9e5d..3efa0b4ebb 100644 --- a/media/libstagefright/wifi-display/source/WifiDisplaySource.h +++ b/media/libstagefright/wifi-display/source/WifiDisplaySource.h @@ -113,6 +113,8 @@ private: static const int64_t kPlaybackSessionTimeoutUs = kPlaybackSessionTimeoutSecs * 1000000ll; + static const AString sUserAgent; + State mState; VideoFormats mSupportedSourceVideoFormats; sp mNetSession; -- 2.11.0