Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 190cdbab authored by Andreas Huber's avatar Andreas Huber
Browse files

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
parent 27a14b22
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@

#define UTILS_H_

#include <media/stagefright/foundation/AString.h>
#include <stdint.h>
#include <utils/Errors.h>
#include <utils/RefBase.h>
@@ -45,6 +46,8 @@ status_t convertMetaDataToMessage(
void convertMessageToMetaData(
        const sp<AMessage> &format, sp<MetaData> &meta);

AString MakeUserAgent();

}  // namespace android

#endif  // UTILS_H_
+16 −1
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@
#include "include/ESDS.h"

#include <arpa/inet.h>

#include <cutils/properties.h>
#include <media/stagefright/foundation/ABuffer.h>
#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/foundation/AMessage.h>
@@ -455,6 +455,21 @@ void convertMessageToMetaData(const sp<AMessage> &msg, sp<MetaData> &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
+2 −14
Original line number Diff line number Diff line
@@ -36,8 +36,8 @@
#include "include/ChromiumHTTPDataSource.h"

#include <cutils/log.h>
#include <cutils/properties.h>
#include <media/stagefright/MediaErrors.h>
#include <media/stagefright/Utils.h>
#include <string>

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());

+6 −19
Original line number Diff line number Diff line
@@ -20,13 +20,12 @@

#include "ARTSPConnection.h"

#include <cutils/properties.h>

#include <media/stagefright/foundation/ABuffer.h>
#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/foundation/AMessage.h>
#include <media/stagefright/foundation/base64.h>
#include <media/stagefright/MediaErrors.h>
#include <media/stagefright/Utils.h>

#include <arpa/inet.h>
#include <fcntl.h>
@@ -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
+2 −4
Original line number Diff line number Diff line
@@ -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<AMessage> mObserveBinaryMessage;

    AString mUserAgent;

    void performDisconnect();

    void onConnect(const sp<AMessage> &msg);
@@ -122,8 +122,6 @@ private:
    static bool ParseSingleUnsignedLong(
            const char *from, unsigned long *x);

    static void MakeUserAgent(AString *userAgent);

    DISALLOW_EVIL_CONSTRUCTORS(ARTSPConnection);
};

Loading