)]}'
{
  "log": [
    {
      "commit": "6b818de29a5c273aad99eb3f5456f88169c911f4",
      "tree": "13f303f6b238e6f932e16b16e9b9ffa2fc306dba",
      "parents": [
        "e25c4d1077071e33795ec0316b504f6cd2a0ba08"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Wed Jan 19 16:48:38 2011 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Jan 20 12:51:43 2011 +0800"
      },
      "message": "Make VpnService synchronous API.\n\nThis eases VpnSettings on dealing with multiple-activity-instance problem\n(i.e., SettingsActivity and VpnSettingsActivity).\n\n+ Most of the code is moved from the VpnServices package to vpn/java/.\n+ VpnManager and VpnServiceBinder are revised to provide synchronous API.\n+ Add a new method isIdle() to IVpnService.aidl.\n\nRelated bug: 3293236 (need to deal with multiple-activity-instance problem)\n\nChange-Id: I03afa3b3af85d7b4ef800683cd075c356a9266c4\n"
    },
    {
      "commit": "a3cdaa5337fa573c4c61770195d6232c2e587090",
      "tree": "99aa62f3acc658a587c2d8a3c33107cf92281dbb",
      "parents": [
        "c15c7a79a69733bd21d6548fd74c2874fdabe7e8"
      ],
      "author": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Thu Jan 13 14:15:43 2011 -0600"
      },
      "committer": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Thu Jan 13 14:15:43 2011 -0600"
      },
      "message": "Revert \"Remove the APIs for the old encryption scheme.\"\n\nThis reverts commit 1125d780a8b61703b8eb28c5c77dac5f3f0022dd.\n"
    },
    {
      "commit": "1125d780a8b61703b8eb28c5c77dac5f3f0022dd",
      "tree": "e3ee92883738c7a26672915af399832adf005e37",
      "parents": [
        "688b0af6a888a8a427d9a4c82fedf3e345e6ae34"
      ],
      "author": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Wed Jan 12 09:47:26 2011 -0600"
      },
      "committer": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Wed Jan 12 15:01:34 2011 -0600"
      },
      "message": "Remove the APIs for the old encryption scheme.\n\nChange-Id: I55116a5b29b10dfd50015805ec019b485257f68b\n"
    },
    {
      "commit": "50945410bf79e076b323b5c6360fa73e26497e72",
      "tree": "4395acfb6835ba79adda49c6969fdc5432fcccb7",
      "parents": [
        "6460a00d6fdf3a1b9e55138f3dd45401c8063b5f"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Wed Nov 25 12:49:24 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Wed Nov 25 12:49:24 2009 +0800"
      },
      "message": "Fix broken build.\n"
    },
    {
      "commit": "a8529f68671a8a118751cb6ad577f44eaf076b96",
      "tree": "bf191767698261c9bdd7b599593f3177a188da7d",
      "parents": [
        "579d418db016a9ae87479da9e29d8827474d68f5"
      ],
      "author": {
        "name": "Oscar Montemayor",
        "email": "oam@google.com",
        "time": "Wed Nov 18 10:14:20 2009 -0800"
      },
      "committer": {
        "name": "Oscar Montemayor",
        "email": "oam@google.com",
        "time": "Tue Nov 24 11:44:19 2009 -0800"
      },
      "message": "Encrypted File Systems Project. Installer modifications.\nStarted to modify isntaller for data redirection to a secure location.\n"
    },
    {
      "commit": "865a1bbf36cc8ea8d9c015effb92733347912244",
      "tree": "32fa8cb9f48a756ad27754b257cc5660b3348087",
      "parents": [
        "f2bd901738736e16ea93f0a4c7275f2141ca3a3e"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Wed Sep 30 18:00:36 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Wed Sep 30 18:39:48 2009 +0800"
      },
      "message": "Remove deprecated VpnType.getDescription().\n"
    },
    {
      "commit": "f2bd901738736e16ea93f0a4c7275f2141ca3a3e",
      "tree": "73eef3dbf18e30edbbf6b774cc09cf782b0903ad",
      "parents": [
        "4ca8c837d3aca781e0ba641ed4353827bfd05805"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Wed Sep 30 16:02:17 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Wed Sep 30 17:07:10 2009 +0800"
      },
      "message": "make vpn type strings i18n ready.\n"
    },
    {
      "commit": "cef28e74afea535c038910d129a1dbe15969c49e",
      "tree": "4a44caa3364639138433f6a497cba19f351e3d64",
      "parents": [
        "3cff76aaa893049d02467a231d477e86a0f80daa"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Aug 27 18:45:21 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Aug 28 09:59:39 2009 +0800"
      },
      "message": "Simplifies err code propagation.\n\n* Other changes\n  + Re-assign err codes in VpnManager.\n  + Add new err codes: REMOTE_PPP_HUNG_UP, PPP_NEGOTIATION_FAILED.\n  + Delete the state file only if it exists (to prevent logging an\n    unable-to-unlink error).\n  + Extend timeout to 40 seconds.\n"
    },
    {
      "commit": "935406709edb9aaf6538e23e88ecfdf77cccd8ba",
      "tree": "14dd901184665435a1529013b0581fdc2b0c4ddd",
      "parents": [
        "dc1d5704a725d207b98de1b117847297958d9148"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Mon Aug 03 16:22:24 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Mon Aug 03 16:22:24 2009 +0800"
      },
      "message": "Issue an error when VPN connection is lost.\n\n+ Add new error code CONNECTION_LOST to VpnManager.\n+ Make VpnService call onError() instead of onDisconnect() when\nconnection is lost.\n+ Make VpnService broadcast CONNECTION_LOST when that happens.\n"
    },
    {
      "commit": "1f1602e7291ab2b4d8d76db33c89828b6e58e6c0",
      "tree": "e091c3145a2285e307c3c23e683771ff2a0e344b",
      "parents": [
        "fe8e48cdd5e621905b8c07325dbe77bffffdb4bb"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Jul 30 20:36:27 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Jul 30 20:36:27 2009 +0800"
      },
      "message": "Add the encryption option to PptpProfile parcel.\n"
    },
    {
      "commit": "fe8e48cdd5e621905b8c07325dbe77bffffdb4bb",
      "tree": "0b627a159a56a490ff1f655aea85d214da423b2a",
      "parents": [
        "b91e2b0292f9f4f76175a18e6e3cf392f3967ae8"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Jul 30 14:02:48 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Jul 30 19:14:50 2009 +0800"
      },
      "message": "Add state saving mechanism to support proc restart\n\nAlso...\n+ stop daemons before getting server IP;\n+ remove setForeground();\n+ add the DBG flag for Log.d calls.\n\nPatchSet 3:\n+ add CHALLENGE_ERROR and REMOTE_HUNG_UP to VpnManager\n+ broadcast new error codes in VpnService\n+ check local IP change instead of dns change\n+ move removeStates() to VpnService.onFinalCleanUp()\n\nPatchSet 7:\n+ add encryption flag to PptpProfile\n+ PptpService and MtpdHelper are revised accordingly\n"
    },
    {
      "commit": "85646c1df349c09bdab4daf87a59700a0eb9fa10",
      "tree": "04ea2219928115253fa0baeb83dc51befb57cfcf",
      "parents": [
        "c22ce6a738bbd757c71f8778defb015ea81ab33c"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Jul 14 16:19:17 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Jul 14 16:29:22 2009 +0800"
      },
      "message": "Make VPN connect even when DNS is not present and other fixes.\n\n* Changes:\n  + As title.\n  + Add two new states to VpnState: UNKNOWN and UNUSABLE.\n  + Add more debug messages when stopping a service and when DNS being\n    overridden.\n"
    },
    {
      "commit": "df1aa3359ccfe81a3f79ed457c7bfc75942a9d91",
      "tree": "8d915f8762b7ce3271a0a0d2b4f84287b9cda059",
      "parents": [
        "cf29e116129f38309c18ba14b9893b079a712289"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Sat Jul 11 22:23:30 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Mon Jul 13 13:11:36 2009 +0800"
      },
      "message": "Add error code in vpn connectivity broadcast.\n\n* Changes\n  + Add VpnConnectingError.java.\n  + Broadcast the error returned by daemons.\n  + Add error codes to VpnManager.java.\n  + Add error code to VpnManager.broadcastConnectivity().\n  Patch Set 4:\n  + Replace VPN_UP with VPN_STATUS in response to ip-up-vpn changes.\n  + Make VpnServiceBinder a foreground service so that it won\u0027t be\n    interrupted by the system.\n  Patch Set 5:\n  + Remove the support of returning 0 from daemon and restart socket in\n    AndroidServiceProxy.\n"
    },
    {
      "commit": "d3aba7f7b67c758b2b325276538da6e1350cce69",
      "tree": "9149e225ffb40e6a65e94ee60339c8fee4159598",
      "parents": [
        "eaa89f74c04c0f10d5f3f8190b457087537bff2e"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Jun 19 19:45:38 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Jun 26 03:02:22 2009 +0800"
      },
      "message": "Add PPTP, L2TP/IPSec preshared key and other fixes.\n\n* Changes\n  + Add PptpProfile.java, PptpService.java.\n  + Add L2tpIpsecPskProfile.java\n  + Add PPTP and L2TP_IPSEC_PSK entries in VpnType.java.\n  + Add the secret option to L2tpProfile.java and have L2tpIpsecProfile\n    extend it.\n  + Add MtpdHelper to send common PPP options.\n  + Add getGatewayIp() to VpnService().\n  + Revise VpnService.reallyGetHostIp().\n\n  Patch Set 6, 7, 8:\n  + Add L2TP secret flag in L2tpProfile.\n\n  Patch Set 9:\n  + Add description to VpnType.\n\n  Patch Set 11:\n  + Pass ipparam to mtpd.\n\n  Patch Set 12:\n  + Add L2TP secret support\n  + Fix string constants\n"
    },
    {
      "commit": "0304325dd72ff8713c8444e909d387af1447f86f",
      "tree": "04d58c9ad8096abc4cb3bdbad3f3172d67d2ff6f",
      "parents": [
        "0fb466836bb654524683152371ecc32142cdf5de"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Mon Jun 15 18:59:01 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Mon Jun 15 19:29:26 2009 +0800"
      },
      "message": "Remove SingleServerProfile.\n\nEnd of refactoring out SingleServerProfile.java.\n"
    },
    {
      "commit": "4c424d61c72af64b4fa1da5e1c52eaebf60fe36e",
      "tree": "173c1b62ae23e4dee284808042fbd601431f56d6",
      "parents": [
        "31390c752828dce0a33d0adeacdf10a49ff847ce"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Mon Jun 15 11:30:11 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Mon Jun 15 13:06:03 2009 +0800"
      },
      "message": "On the way of refactoring out SingleServerProfile.java.\n\n+ Move mServerName from SingleServerProfile and VpnProfile.\n+ Add mSavedUsername to VpnProfile.\n+ Keep empty SingleServerProfile to not break the classes that use it.\n+ Remove use of SingleServerProfile from VpnService.java.\n"
    },
    {
      "commit": "f94b6444a3d4dc6d904754f80b2f940be90e432b",
      "tree": "6929a787d45050a738b8ac24f7322d001aceaf96",
      "parents": [
        "78f0f8cb2efe9410127c39201e240f6d438eb53c"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Mon Jun 08 13:27:11 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Jun 12 15:45:56 2009 +0800"
      },
      "message": "Add the VPN services package, VPN service base classes and L2tpIpsecService.\n\nAlso add android.security.Keystore. This is a quick solution. Will be\nevolved to a more mature implementation.\n\nPATCH SET 2:\n+ Add VpnServiceBinder to hide VpnService and its subclasses.\n+ Add sendCommand2() to AndroidServiceProxy to work with the latest mtpd.\n\nPATCH SET 3:\n+ Rebase to catch up with new commits; no changes made.\n\nPATCH SET 4:\n+ Remove/comment out @Override on interface methods to be compilable for Java 1.5.\n\nPATCH SET 5:\n+ Add L2tpService.java.\n+ Make VpnService to work on SingleServerProfile; add serverIp to\n  connect(); set system property \"net.vpn.server_ip\"; and move\n  getPppOptionFilePath() from L2tpIpsecService to VpnService\n+ Revise VpnManager to start VpnService without worrying about which\n  type (as the type info is in VpnProfile)\n+ Remove installation stuff from VpnManager\n\nPATCH SET 6:\n+ Fix PATCH SET 5 (the patch was messed up). Please ignore PATCH SET 5.\n\nPATCH SET 7:\n+ Fix styles.\n\nPATCH SET 8:\n+ Add CANCELLED to VpnState.\n\nPATCH SET 9:\n+ Make VpnProfile serializable (in order to save them to persistent storage)\n\nPATCH SET 10:\n+ Remove Keystore.java as it\u0027s added in another CL.\n"
    },
    {
      "commit": "be19df0a4dcc5c9f2214935cfe6504df18be8697",
      "tree": "234f5e7e95c02636e6aff4dfc7fb3305a8dd085e",
      "parents": [
        "c11a3fab1a7c51bd3ec8ce63c68125fc8c6b3364"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Mon Jun 08 23:23:15 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Mon Jun 08 23:23:15 2009 -0700"
      },
      "message": "Fix the build\n"
    },
    {
      "commit": "55567efca99de7242b118cf7bf13cc773b01941c",
      "tree": "39c6d8019008d0b98f7d2b546ae5185ea7015262",
      "parents": [
        "bac43254b219c827f3d1fd286f4a7f19e9ee2f05"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Wed Jun 03 23:56:34 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Jun 09 11:28:38 2009 +0800"
      },
      "message": "First-time check-in of the VPN APIs.\n\nPatch Set 2:\n- Fixed style issues raised by cywang.\nPatch Set 3:\n- Hide everything\n- Make VpnProfile parcelable\nPatch Set 4:\n- Add license notice\n"
    }
  ]
}
