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

Commit 4585e0e9 authored by Brad Fitzpatrick's avatar Brad Fitzpatrick Committed by Android Code Review
Browse files

Merge changes I087d0074,I8a51924e

* changes:
  Permit 0 length writes.
  Let SocketClient users write binary data to clients.
parents cdeba125 b9634d05
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -28,8 +28,12 @@ public:
    uid_t getUid() const { return mUid; }
    gid_t getGid() const { return mGid; }

    // Send null-terminated C strings:
    int sendMsg(int code, const char *msg, bool addErrno);
    int sendMsg(const char *msg);

    // Sending binary data:
    int sendData(const void *data, int len);
};

typedef android::List<SocketClient *> SocketClientCollection;
+17 −5
Original line number Diff line number Diff line
@@ -50,14 +50,26 @@ int SocketClient::sendMsg(const char *msg) {
    }

    // Send the message including null character
    if (sendData(msg, strlen(msg) + 1) != 0) {
        SLOGW("Unable to send msg '%s'", msg);
        return -1;
    }
    return 0;
}

int SocketClient::sendData(const void* data, int len) {
    int rc = 0;
    const char *p = msg;
    int brtw = strlen(msg) + 1;
    const char *p = (const char*) data;
    int brtw = len;

    if (len == 0) {
        return 0;
    }

    pthread_mutex_lock(&mWriteMutex);
    while(brtw) {
    while (brtw > 0) {
        if ((rc = write(mSocket, p, brtw)) < 0) {
            SLOGW("Unable to send msg '%s' (%s)", msg, strerror(errno));
            SLOGW("write error (%s)", strerror(errno));
            pthread_mutex_unlock(&mWriteMutex);
            return -1;
        } else if (!rc) {
+1 −0
Original line number Diff line number Diff line
@@ -320,6 +320,7 @@ service vold /system/bin/vold

service netd /system/bin/netd
    socket netd stream 0660 root system
    socket dnsproxyd stream 0660 root inet

service debuggerd /system/bin/debuggerd