diff options
author | satok <satok@google.com> | 2011-03-15 11:04:58 +0900 |
---|---|---|
committer | The Android Automerger <android-build@android.com> | 2011-03-15 23:15:02 -0700 |
commit | f0a670eb12a0e5854dfd2a9284973d0711392653 (patch) | |
tree | 6f9141f2659632c6042043b2e286258c24d0c55a | |
parent | 49ad2447286b7b3af73f52d6f000f1452c7ece0a (diff) | |
download | core-f0a670eb12a0e5854dfd2a9284973d0711392653.tar.gz core-f0a670eb12a0e5854dfd2a9284973d0711392653.tar.bz2 core-f0a670eb12a0e5854dfd2a9284973d0711392653.zip |
do not merge. Fix a race in system properties.
Backport Iee1ca9b7defd6
This now passes:
$ adb shell am instrument -w -e class android.os.SystemPropertiesTest \
com.android.frameworks.coretests.systemproperties/android.test.InstrumentationTestRunner
(which tests setting and re-reading back system properties in a loop)
This patch depends on I110b653a which moves property setting
from libcutils into bionic.
Bug: 3511230
Change-Id: I145e642bd13079677017bb64e361e176fc73b810
-rw-r--r-- | libcutils/properties.c | 40 |
1 files changed, 1 insertions, 39 deletions
diff --git a/libcutils/properties.c b/libcutils/properties.c index 547cc6dc5..98f356b7e 100644 --- a/libcutils/properties.c +++ b/libcutils/properties.c @@ -31,47 +31,9 @@ #define _REALLY_INCLUDE_SYS__SYSTEM_PROPERTIES_H_ #include <sys/_system_properties.h> -static int send_prop_msg(prop_msg *msg) -{ - int s; - int r; - - s = socket_local_client(PROP_SERVICE_NAME, - ANDROID_SOCKET_NAMESPACE_RESERVED, - SOCK_STREAM); - if(s < 0) return -1; - - while((r = send(s, msg, sizeof(prop_msg), 0)) < 0) { - if((errno == EINTR) || (errno == EAGAIN)) continue; - break; - } - - if(r == sizeof(prop_msg)) { - r = 0; - } else { - r = -1; - } - - close(s); - return r; -} - int property_set(const char *key, const char *value) { - prop_msg msg; - unsigned resp; - - if(key == 0) return -1; - if(value == 0) value = ""; - - if(strlen(key) >= PROP_NAME_MAX) return -1; - if(strlen(value) >= PROP_VALUE_MAX) return -1; - - msg.cmd = PROP_MSG_SETPROP; - strcpy((char*) msg.name, key); - strcpy((char*) msg.value, value); - - return send_prop_msg(&msg); + return __system_property_set(key, value); } int property_get(const char *key, char *value, const char *default_value) |