diff --git a/Android.mk b/Android.mk
index 2c2a2f6..67a9911 100644
--- a/Android.mk
+++ b/Android.mk
@@ -22,7 +22,7 @@
 LOCAL_SRC_FILES := mtpd.c l2tp.c pptp.c
 LOCAL_SHARED_LIBRARIES := libcutils libcrypto
 LOCAL_CFLAGS := -DANDROID_CHANGES
-LOCAL_C_INCLUDES := external/openssl/include frameworks/base/cmds/keystore
+LOCAL_C_INCLUDES := external/openssl/include
 
 LOCAL_MODULE := mtpd
 
diff --git a/mtpd.c b/mtpd.c
index 902fcc0..1198d9d 100644
--- a/mtpd.c
+++ b/mtpd.c
@@ -32,7 +32,6 @@
 #ifdef ANDROID_CHANGES
 #include <android/log.h>
 #include <cutils/sockets.h>
-#include "keystore_get.h"
 #endif
 
 #include "mtpd.h"
@@ -114,15 +113,18 @@
 
     args[0] = (*argv)[0];
     for (i = 1; i < 32; ++i) {
-        unsigned char length;
-        if (recv(control, &length, 1, 0) != 1) {
+        unsigned char bytes[2];
+        if (recv(control, &bytes[0], 1, 0) != 1
+            || recv(control, &bytes[1], 1, 0) != 1) {
             log_print(FATAL, "Cannot get argument length");
             exit(SYSTEM_ERROR);
-        }
-        if (length == 0xFF) {
-            break;
         } else {
+            int length = bytes[0] << 8 | bytes[1];
             int offset = 0;
+
+            if (length == 0xFFFF) {
+                break;
+            }
             args[i] = malloc(length + 1);
             while (offset < length) {
                 int n = recv(control, &args[i][offset], length - offset, 0);
@@ -138,21 +140,6 @@
     }
     log_print(DEBUG, "Received %d arguments", i - 1);
 
-    /* L2TP secret is the only thing stored in keystore. We do the query here
-     * so other files are clean and free from android specific code. */
-    if (i > 4 && !strcmp("l2tp", args[1]) && args[4][0]) {
-        char value[KEYSTORE_MESSAGE_SIZE];
-        int length = keystore_get(args[4], strlen(args[4]), value);
-        if (length == -1) {
-            log_print(FATAL, "Cannot get L2TP secret from keystore");
-            exit(SYSTEM_ERROR);
-        }
-        free(args[4]);
-        args[4] = malloc(length + 1);
-        memcpy(args[4], value, length);
-        args[4][length] = 0;
-    }
-
     *argc = i;
     *argv = args;
     return control;
