Merge changes I087d0074,I8a51924e

* changes:
  Permit 0 length writes.
  Let SocketClient users write binary data to clients.
This commit is contained in:
Brad Fitzpatrick 2011-01-25 15:13:28 -08:00 committed by Android Code Review
commit 4585e0e9f7
3 changed files with 22 additions and 5 deletions

View File

@ -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;

View File

@ -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) {
if ((rc = write(mSocket,p, brtw)) < 0) {
SLOGW("Unable to send msg '%s' (%s)", msg, strerror(errno));
while (brtw > 0) {
if ((rc = write(mSocket, p, brtw)) < 0) {
SLOGW("write error (%s)", strerror(errno));
pthread_mutex_unlock(&mWriteMutex);
return -1;
} else if (!rc) {

View File

@ -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