summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Kondik <shade@chemlab.org>2012-11-18 15:17:03 -0800
committerSteve Kondik <shade@chemlab.org>2012-11-18 15:17:03 -0800
commit78088eebf9d82831cdfa960bff91ac85f0268430 (patch)
tree5c7c94fafc5e40da86b16845e2ac247d29be5a79
parentc3a70a9536fd3a288a886d4e99618e1c70e48b22 (diff)
parent758fb6cde3ee6ab53aa6b4b07a2acc2bde0b6c5d (diff)
downloadandroid_external_dnsmasq-cm-10.1.tar.gz
android_external_dnsmasq-cm-10.1.tar.bz2
android_external_dnsmasq-cm-10.1.zip
-rw-r--r--ThirdPartyProject.prop9
-rwxr-xr-xsrc/dnsmasq.c38
2 files changed, 23 insertions, 24 deletions
diff --git a/ThirdPartyProject.prop b/ThirdPartyProject.prop
deleted file mode 100644
index 08a49af..0000000
--- a/ThirdPartyProject.prop
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright 2010 Google Inc. All Rights Reserved.
-#Fri Jul 16 10:03:08 PDT 2010
-currentVersion=2.52
-version=2.51
-isNative=true
-name=dnsmasq
-keywords=dnsmasq
-onDevice=true
-homepage=http\://www.thekelleys.org.uk/dnsmasq/doc.html
diff --git a/src/dnsmasq.c b/src/dnsmasq.c
index 1a9d808..f6b371a 100755
--- a/src/dnsmasq.c
+++ b/src/dnsmasq.c
@@ -984,32 +984,40 @@ static int set_android_listeners(fd_set *set, int *maxfdp) {
}
static int check_android_listeners(fd_set *set) {
+ int retcode = 0;
if (FD_ISSET(STDIN_FILENO, set)) {
char buffer[1024];
int rc;
+ int consumed = 0;
if ((rc = read(STDIN_FILENO, buffer, sizeof(buffer) -1)) < 0) {
my_syslog(LOG_ERR, _("Error reading from stdin (%s)"), strerror(errno));
return -1;
}
buffer[rc] = '\0';
- char *next = buffer;
- char *cmd;
-
- if (!(cmd = strsep(&next, ":"))) {
- my_syslog(LOG_ERR, _("Malformatted msg '%s'"), buffer);
- return -1;
- }
-
- if (!strcmp(buffer, "update_dns")) {
- set_servers(&buffer[11]);
- check_servers();
- } else {
- my_syslog(LOG_ERR, _("Unknown cmd '%s'"), cmd);
- return -1;
+ while(consumed < rc) {
+ char *cmd;
+ char *current_cmd = &buffer[consumed];
+ char *params = current_cmd;
+ int len = strlen(current_cmd);
+
+ cmd = strsep(&params, ":");
+ if (!strcmp(cmd, "update_dns")) {
+ if (params != NULL) {
+ set_servers(params);
+ check_servers();
+ } else {
+ my_syslog(LOG_ERR, _("Malformatted msg '%s'"), current_cmd);
+ retcode = -1;
+ }
+ } else {
+ my_syslog(LOG_ERR, _("Unknown cmd '%s'"), cmd);
+ retcode = -1;
+ }
+ consumed += len + 1;
}
}
- return 0;
+ return retcode;
}
#endif