)]}'
{
  "log": [
    {
      "commit": "7915adec656341bfab173484e1e0ca661eea1627",
      "tree": "f828eec8f6e67b0abcde54c5de26512e6159ab8e",
      "parents": [
        "6e8d52d67985086acd3d37cc2d2f9aad57ee8795",
        "91a5932cff424e962bc8bcffbd4cdcb542260ef7"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@webpagetest.org",
        "time": "Fri Feb 12 13:50:24 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 12 13:50:24 2021"
      },
      "message": "Merge pull request #26 from andrey-malets/fix-message-output\n\nAdd missing newline after status message."
    },
    {
      "commit": "91a5932cff424e962bc8bcffbd4cdcb542260ef7",
      "tree": "f828eec8f6e67b0abcde54c5de26512e6159ab8e",
      "parents": [
        "6e8d52d67985086acd3d37cc2d2f9aad57ee8795"
      ],
      "author": {
        "name": "Andrey Malets",
        "email": "malets@yandex-team.ru",
        "time": "Fri Feb 12 07:44:26 2021"
      },
      "committer": {
        "name": "Andrey Malets",
        "email": "malets@yandex-team.ru",
        "time": "Fri Feb 12 07:44:26 2021"
      },
      "message": "Add missing newline after status message.\n\nThe \"print\" statement that was used before automatically inserted\nnewline character after the message, while .write() method does\nnot do this, which broke compatibility with some clients, notably\nCatapult.  Also fix formatting a little by stripping unnecessary\nspace.\n"
    },
    {
      "commit": "6e8d52d67985086acd3d37cc2d2f9aad57ee8795",
      "tree": "5a9d9e8a6f8fc61736151226161443db6a36c98f",
      "parents": [
        "1cf2b4688661540f5779ee0f54ae549650d1c7d5",
        "70f68273c4633105c69e805464567b19be8f2a76"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@webpagetest.org",
        "time": "Thu Feb 11 19:26:09 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 11 19:26:09 2021"
      },
      "message": "Merge pull request #25 from andrey-malets/add-exit-command\n\nAdd explicit exit command."
    },
    {
      "commit": "70f68273c4633105c69e805464567b19be8f2a76",
      "tree": "5a9d9e8a6f8fc61736151226161443db6a36c98f",
      "parents": [
        "1cf2b4688661540f5779ee0f54ae549650d1c7d5"
      ],
      "author": {
        "name": "Andrey Malets",
        "email": "malets@yandex-team.ru",
        "time": "Thu Feb 11 18:59:01 2021"
      },
      "committer": {
        "name": "Andrey Malets",
        "email": "malets@yandex-team.ru",
        "time": "Thu Feb 11 18:59:01 2021"
      },
      "message": "Add explicit exit command.\n\nSome platforms (notably, Windows) do not support graceful process termination\nwith SIGINT signal, this change adds an explicit \"exit\" command so the\nserver could be stopped gracefully from input command rather than a signal.\n"
    },
    {
      "commit": "1cf2b4688661540f5779ee0f54ae549650d1c7d5",
      "tree": "723f974d6a74eee1e8ef4d712cc141ef4e255aa3",
      "parents": [
        "0f4b83fcb47a948d766d948964e30a34961bd6d4"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Thu Oct 10 13:01:52 2019"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Thu Oct 10 13:01:52 2019"
      },
      "message": "Fixed the processing of messages when bandwidth shaping is enabled.\nFix #21\n"
    },
    {
      "commit": "0f4b83fcb47a948d766d948964e30a34961bd6d4",
      "tree": "ca566f1f4e863b856981a5955e00dec92329c340",
      "parents": [
        "08211e3465b42baf4856b00093da22732fe6937a"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "PatMeenan@gmail.com",
        "time": "Tue Sep 17 21:32:46 2019"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "PatMeenan@gmail.com",
        "time": "Tue Sep 17 21:32:46 2019"
      },
      "message": "Fixed edge case that could cause a packet to not be removed if an exception happened during processing\n"
    },
    {
      "commit": "08211e3465b42baf4856b00093da22732fe6937a",
      "tree": "823ddde6ab407a77c4cb15ba1507ca30b2fc8c94",
      "parents": [
        "6ccc0eb5a8d308608d155545d265bd425765d724"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "PatMeenan@gmail.com",
        "time": "Tue Sep 17 17:44:52 2019"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "PatMeenan@gmail.com",
        "time": "Tue Sep 17 17:44:52 2019"
      },
      "message": "Remove the task_done from the packet queue processing.\n\nIt was somehow getting out of sync with the actual queue and throwing exceptions. Since we don\u0027t join() the packet queues we don\u0027t actually need it so I removed  it.\n\nFix #20\n"
    },
    {
      "commit": "6ccc0eb5a8d308608d155545d265bd425765d724",
      "tree": "3cbcba40fa31117771076be328ab463ab812b8e0",
      "parents": [
        "22590b360f5eec7292c8572057af7b779a035a99"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Sun Aug 04 20:00:53 2019"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Sun Aug 04 20:00:53 2019"
      },
      "message": "Reduce CPU utilization by waiting the exact time needed for the next packet if it is more than 1ms.\n"
    },
    {
      "commit": "22590b360f5eec7292c8572057af7b779a035a99",
      "tree": "e42ab0b52eb417afda8def1bdab1d3260a93e799",
      "parents": [
        "1741651a931631f66a496813d9af9dff874ef90c"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Fri Aug 02 19:53:43 2019"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Fri Aug 02 19:53:43 2019"
      },
      "message": "Made the automatic dns flushing optional\n"
    },
    {
      "commit": "1741651a931631f66a496813d9af9dff874ef90c",
      "tree": "376aed30bfeeb2464b07ca263c8720c9873d80bf",
      "parents": [
        "3a688e34fb325f650f10bf79cf7f249e041263b5"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Fri Aug 02 19:49:30 2019"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Fri Aug 02 19:49:30 2019"
      },
      "message": "Automatically flush the DNS cache 500ms after the last client disconnects\nFor #19\n"
    },
    {
      "commit": "3a688e34fb325f650f10bf79cf7f249e041263b5",
      "tree": "074157d3ad0ef2b00051564b424a5c75e830a302",
      "parents": [
        "dc1e33475eb5de6816c14706b41c10d375906821"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Fri Aug 02 19:16:29 2019"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Fri Aug 02 19:16:29 2019"
      },
      "message": "Added a command-line option to disable the internal DNS cache\n"
    },
    {
      "commit": "dc1e33475eb5de6816c14706b41c10d375906821",
      "tree": "f81899b3635224ead3bc2034ec2a7f324d618d8c",
      "parents": [
        "f0ab7517a907cb16c8f67965b05c740a32848112"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Thu Jul 18 19:39:32 2019"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Thu Jul 18 19:39:32 2019"
      },
      "message": "Some compatibility fixes for eventually supporting Python3\n"
    },
    {
      "commit": "f0ab7517a907cb16c8f67965b05c740a32848112",
      "tree": "6ae7c2b35c52c8aa88dd42fff177ed362b5a85d4",
      "parents": [
        "588f3f9ed714793d2f2cf17180709daaa37bfbe1"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Tue Jul 16 20:10:04 2019"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Tue Jul 16 20:10:04 2019"
      },
      "message": "Fix clock issues on platforms other than Windows\n"
    },
    {
      "commit": "588f3f9ed714793d2f2cf17180709daaa37bfbe1",
      "tree": "8b81e5dafa2a6acffd950bb7f3d78828bf2c9ff3",
      "parents": [
        "100fc3ebe7c679bd4e77bf5baf79134d412ef91a",
        "a6b3c657a8dea175971d05c55ea715a3a75dda4e"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "patmeenan@gmail.com",
        "time": "Fri May 04 21:46:58 2018"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 04 21:46:58 2018"
      },
      "message": "Merge pull request #17 from Clockware/patch-1\n\nUncomment reuse_addr"
    },
    {
      "commit": "a6b3c657a8dea175971d05c55ea715a3a75dda4e",
      "tree": "8b81e5dafa2a6acffd950bb7f3d78828bf2c9ff3",
      "parents": [
        "100fc3ebe7c679bd4e77bf5baf79134d412ef91a"
      ],
      "author": {
        "name": "Pavel Gorin",
        "email": "Clockware@users.noreply.github.com",
        "time": "Fri May 04 16:42:49 2018"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 04 16:42:49 2018"
      },
      "message": "Uncomment reuse_addr\n\nJust discovered the issue. Having multiple Ctrl+C while checking is really annoying."
    },
    {
      "commit": "100fc3ebe7c679bd4e77bf5baf79134d412ef91a",
      "tree": "5e6525e7250fc82b1f0decd33763a40d01e2088e",
      "parents": [
        "67b9532159f723a4be1424e40018151bbff4668f",
        "488f87d62c61d833f1124db74e1e5bcb0fa97096"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "patmeenan@gmail.com",
        "time": "Wed Jan 10 18:28:16 2018"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 10 18:28:16 2018"
      },
      "message": "Merge pull request #16 from pataquets/master\n\nAdd Docker support"
    },
    {
      "commit": "488f87d62c61d833f1124db74e1e5bcb0fa97096",
      "tree": "5e6525e7250fc82b1f0decd33763a40d01e2088e",
      "parents": [
        "50b567a31f11fa4dac71f14ecf93981e2f9d2321"
      ],
      "author": {
        "name": "pataquets",
        "email": "amontero@tinet.org",
        "time": "Wed Jan 10 18:16:34 2018"
      },
      "committer": {
        "name": "pataquets",
        "email": "amontero@tinet.org",
        "time": "Wed Jan 10 18:16:34 2018"
      },
      "message": "Add Docker Hub\u0027s official image docs.\n"
    },
    {
      "commit": "50b567a31f11fa4dac71f14ecf93981e2f9d2321",
      "tree": "b571ae71e6f3c41679c1c5d01d095a6b9725b368",
      "parents": [
        "67b9532159f723a4be1424e40018151bbff4668f"
      ],
      "author": {
        "name": "pataquets",
        "email": "amontero@tinet.org",
        "time": "Mon Jan 08 19:45:01 2018"
      },
      "committer": {
        "name": "pataquets",
        "email": "amontero@tinet.org",
        "time": "Mon Jan 08 19:45:01 2018"
      },
      "message": "Dockerfile initial version.\n"
    },
    {
      "commit": "67b9532159f723a4be1424e40018151bbff4668f",
      "tree": "9857cd53f797e2ef19a53e5d2500a1e500a7bd9d",
      "parents": [
        "c35950686c14ca27306bfc303fcf7139e3b3d912"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Tue Oct 17 20:27:03 2017"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Tue Oct 17 20:27:03 2017"
      },
      "message": "Switched to use python from the environment\n"
    },
    {
      "commit": "c35950686c14ca27306bfc303fcf7139e3b3d912",
      "tree": "8cf0facf1dfe9b1ecf678c2f89fecaf583d56eaa",
      "parents": [
        "86064fa92aff941708680a91a431b6a2d4c8308f"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Tue Sep 19 15:33:23 2017"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Tue Sep 19 15:33:23 2017"
      },
      "message": "Fixed issues with caching localhost lookups\nWould cause the port mappings to get applied to later requests\n"
    },
    {
      "commit": "86064fa92aff941708680a91a431b6a2d4c8308f",
      "tree": "426793a4e3d271539bd9671a5193dbc8b905d51c",
      "parents": [
        "a2f578febcd79b751d948f615bbde8f6189fbeed",
        "e6dd4cb46963ae9a616db026c506e6f20c039938"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "patmeenan@gmail.com",
        "time": "Thu Aug 03 19:47:56 2017"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 03 19:47:56 2017"
      },
      "message": "Merge pull request #15 from paulirish/patch-3\n\nreadme: fix heading formatting"
    },
    {
      "commit": "e6dd4cb46963ae9a616db026c506e6f20c039938",
      "tree": "426793a4e3d271539bd9671a5193dbc8b905d51c",
      "parents": [
        "a2f578febcd79b751d948f615bbde8f6189fbeed"
      ],
      "author": {
        "name": "Paul Irish",
        "email": "paul.irish@gmail.com",
        "time": "Thu Aug 03 19:13:32 2017"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 03 19:13:32 2017"
      },
      "message": "readme: fix heading formatting"
    },
    {
      "commit": "a2f578febcd79b751d948f615bbde8f6189fbeed",
      "tree": "8c14b6299885e5297a19d57959546dc94a1cb3d8",
      "parents": [
        "c983a3178b27a55488c5d5e9860557da93d2f452"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Sun Mar 12 19:45:18 2017"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Sun Mar 12 19:45:18 2017"
      },
      "message": "Increased the send/receive buffers to match Chrome\u0027s settings (128KB)\n"
    },
    {
      "commit": "c983a3178b27a55488c5d5e9860557da93d2f452",
      "tree": "3748cc52ca9af936856302c3e09b078f2b276ef8",
      "parents": [
        "9ae7d2ff822cb7cef15bc54ff614273c99691744"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Sun Mar 12 19:32:03 2017"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Sun Mar 12 19:32:03 2017"
      },
      "message": "Added support for logging to a log file instead of stdout.\nFixed #13\n"
    },
    {
      "commit": "9ae7d2ff822cb7cef15bc54ff614273c99691744",
      "tree": "0ba28efbe85f2ab906fc18a56c5e8ae4f79eb39f",
      "parents": [
        "8327a03e5d3e6ff3e09a0c16648ea158f738fe9f"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Wed Nov 23 16:57:54 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Wed Nov 23 16:57:54 2016"
      },
      "message": "Got rid of the unneeded getaddrinfo replacement for v4 addresses (was a red herring and caused other issues)\n"
    },
    {
      "commit": "8327a03e5d3e6ff3e09a0c16648ea158f738fe9f",
      "tree": "f377be1642714412ce3e8f266773e916403a20b9",
      "parents": [
        "a8794631400756e7be563d60388ac21d9dd6136f"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Wed Nov 23 16:28:14 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Wed Nov 23 16:28:14 2016"
      },
      "message": "More fixes for when traffic shaping is enabled to tick fast when the queue is empty but a message is being held to be processed\n"
    },
    {
      "commit": "a8794631400756e7be563d60388ac21d9dd6136f",
      "tree": "f503f457910935c9fc488c1a9954df8ce7113bc3",
      "parents": [
        "7049101390cf845cb8703db0a7d4912b411002cd"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Wed Nov 23 15:37:12 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Wed Nov 23 15:37:12 2016"
      },
      "message": "Added logic to tick at 1ms when background DNS lookups are happening and to avoid calling getaddrinfo for IP addresses\n"
    },
    {
      "commit": "7049101390cf845cb8703db0a7d4912b411002cd",
      "tree": "5570d4b008591e480929ad9805076ea2550f0139",
      "parents": [
        "4ec22e892a042abaabe055dc68d7fd22a5ecc90a"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Wed Nov 23 15:04:39 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Wed Nov 23 15:04:39 2016"
      },
      "message": "Fixed an issue where background thread activity was not being handled correctly\n"
    },
    {
      "commit": "4ec22e892a042abaabe055dc68d7fd22a5ecc90a",
      "tree": "5751da00a423b3ae4deaac92a47e98ccc158b9e7",
      "parents": [
        "1dd398d9fb777ec43de50827b470020dfc4d23c9"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Mon Nov 21 20:06:13 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Mon Nov 21 20:06:13 2016"
      },
      "message": "Reduced CPU impact when idle or running in bypass mode\n"
    },
    {
      "commit": "1dd398d9fb777ec43de50827b470020dfc4d23c9",
      "tree": "9c17cd700e6ec7e431ef6400753c3d28d3247af9",
      "parents": [
        "e0535f536d5da190295aa39d5f845b4f52051313"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Fri Oct 28 13:36:12 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Fri Oct 28 13:36:12 2016"
      },
      "message": "Rolled back the slow start and cpu-lowering changes.  They were adding a lot of complexity with no measurable differences\n"
    },
    {
      "commit": "e0535f536d5da190295aa39d5f845b4f52051313",
      "tree": "ec0f9791efbc38c1f85641f0edea1cc56a027f99",
      "parents": [
        "bd6001619c5c3a6a8ee51057e17de5aeb5a432c1"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Mon Oct 24 18:37:28 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Mon Oct 24 18:37:28 2016"
      },
      "message": "Moved the ctypes loading to be in the windows-specific code\n"
    },
    {
      "commit": "bd6001619c5c3a6a8ee51057e17de5aeb5a432c1",
      "tree": "4698a41d520eb89be903c277ecc0130bd2509295",
      "parents": [
        "e9183047f964c652fc47da46105bf623fa4ba8ea"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Mon Oct 24 17:18:15 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Mon Oct 24 17:18:15 2016"
      },
      "message": "Added the slow start emulation back in\n"
    },
    {
      "commit": "e9183047f964c652fc47da46105bf623fa4ba8ea",
      "tree": "ca668cc88f1a13242994bc5a930540808094d8c5",
      "parents": [
        "346a04b116fe99695775d50ecc64c9980099c686"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Mon Oct 24 16:43:11 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Mon Oct 24 16:43:11 2016"
      },
      "message": "Increased the resolution of the windows timer to 1ms and reduced the amount of polling to lower CPU utilization (now intelligently blocks on the network based on how much time is remaining before the next message needs to be delivered\n"
    },
    {
      "commit": "346a04b116fe99695775d50ecc64c9980099c686",
      "tree": "406968e92baf041869986764b94f1ee6a135814a",
      "parents": [
        "0c4211282b28733a203c895494d9e8f48ff614cd",
        "3364c133fa9e6c40cc1797d5510012f271506654"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Sun Oct 23 14:57:05 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Sun Oct 23 14:57:05 2016"
      },
      "message": "Merge branch \u0027master\u0027 of github.com:WPO-Foundation/tsproxy\n"
    },
    {
      "commit": "0c4211282b28733a203c895494d9e8f48ff614cd",
      "tree": "2aaaacace6ba6c5fdbdc339b0a93ba082f1bafb5",
      "parents": [
        "a10680a3d25bdfa50ce0f78a9dbbe59f07c365b9"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Sun Oct 23 14:56:56 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Sun Oct 23 14:56:56 2016"
      },
      "message": "Removed the TCP slow start emulation.  It was not working well and caused requests to fail.\nFixed #9\n"
    },
    {
      "commit": "3364c133fa9e6c40cc1797d5510012f271506654",
      "tree": "1011462fecd6161cfe4eeaa0935b716cf291decf",
      "parents": [
        "e4e183db6621cf455629dd6da905eaac8e752812",
        "ac71a5bac57bba8e1755364e1fa603979b298abe"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "patmeenan@gmail.com",
        "time": "Mon Oct 10 21:56:05 2016"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 10 21:56:05 2016"
      },
      "message": "Merge pull request #8 from paulirish/patch-2\n\nreadme: known issue about quic"
    },
    {
      "commit": "ac71a5bac57bba8e1755364e1fa603979b298abe",
      "tree": "1011462fecd6161cfe4eeaa0935b716cf291decf",
      "parents": [
        "e4e183db6621cf455629dd6da905eaac8e752812"
      ],
      "author": {
        "name": "Paul Irish",
        "email": "paul.irish@gmail.com",
        "time": "Mon Oct 10 21:17:05 2016"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 10 21:17:05 2016"
      },
      "message": "readme: known issue about quic"
    },
    {
      "commit": "e4e183db6621cf455629dd6da905eaac8e752812",
      "tree": "8f15830ad342a61094c64d8d8e4d7f23b1242d43",
      "parents": [
        "a10680a3d25bdfa50ce0f78a9dbbe59f07c365b9",
        "081b6bd2905566bb45c6a842031eb51f6da676c9"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "patmeenan@gmail.com",
        "time": "Mon Oct 10 20:19:50 2016"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 10 20:19:50 2016"
      },
      "message": "Merge pull request #7 from paulirish/patch-1\n\nreadme: formatting"
    },
    {
      "commit": "081b6bd2905566bb45c6a842031eb51f6da676c9",
      "tree": "8f15830ad342a61094c64d8d8e4d7f23b1242d43",
      "parents": [
        "a10680a3d25bdfa50ce0f78a9dbbe59f07c365b9"
      ],
      "author": {
        "name": "Paul Irish",
        "email": "paul.irish@gmail.com",
        "time": "Mon Oct 10 19:12:51 2016"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 10 19:12:51 2016"
      },
      "message": "readme: formatting"
    },
    {
      "commit": "a10680a3d25bdfa50ce0f78a9dbbe59f07c365b9",
      "tree": "54fb39a749bea5723b3095cbe3f158b302ad478e",
      "parents": [
        "6fae6141104d077c8ceb1136b6ddee5b98f30240"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Fri Aug 19 18:54:29 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Fri Aug 19 18:54:29 2016"
      },
      "message": "Added a set of \"reset\" commands to reset traffic shaping and port mapping\n"
    },
    {
      "commit": "6fae6141104d077c8ceb1136b6ddee5b98f30240",
      "tree": "b3294e8a34bc3e9f129894fc1cc49c224ed498aa",
      "parents": [
        "ff4a3731f10b7117ce8348449a4a89d4eb555943"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Mon Aug 15 19:07:37 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Mon Aug 15 19:07:37 2016"
      },
      "message": "Added protection around the stdin command processing to make sure it always succeeds or fails\n"
    },
    {
      "commit": "ff4a3731f10b7117ce8348449a4a89d4eb555943",
      "tree": "d0c7fc2010827b94174860e9ce97cf974b2403d1",
      "parents": [
        "16761160e67ee9559d99f41142b55df88e632d87"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Wed Aug 10 20:50:16 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Wed Aug 10 20:50:16 2016"
      },
      "message": "Added support for changing mapports at runtime (using \"set mapports xxxxxxxx\" on stdin)\nFixed #5\n"
    },
    {
      "commit": "16761160e67ee9559d99f41142b55df88e632d87",
      "tree": "f2c063660bb324f0a7621d729aea92b44c656d9e",
      "parents": [
        "57fc3488b74157e919153dcb41adfebdccf94874"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Wed Aug 10 14:46:33 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Wed Aug 10 14:46:33 2016"
      },
      "message": "Fixed the support for port remapping\n"
    },
    {
      "commit": "57fc3488b74157e919153dcb41adfebdccf94874",
      "tree": "a3a18279a7b4b77273e199d30982048061c5b616",
      "parents": [
        "c172f65cb6a865b281aa7fae778c0eb2292028a5",
        "04b91d54745904489421607977284957369f8721"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "patmeenan@gmail.com",
        "time": "Mon Aug 08 14:40:35 2016"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 08 14:40:35 2016"
      },
      "message": "Merge pull request #4 from nedn/master\n\nAlways flush messages after print them to stdout"
    },
    {
      "commit": "04b91d54745904489421607977284957369f8721",
      "tree": "a3a18279a7b4b77273e199d30982048061c5b616",
      "parents": [
        "c172f65cb6a865b281aa7fae778c0eb2292028a5"
      ],
      "author": {
        "name": "nednguyen",
        "email": "nednguyen@google.com",
        "time": "Mon Aug 08 14:13:20 2016"
      },
      "committer": {
        "name": "nednguyen",
        "email": "nednguyen@google.com",
        "time": "Mon Aug 08 14:13:20 2016"
      },
      "message": "Always flush messages after print them to stdout\n"
    },
    {
      "commit": "c172f65cb6a865b281aa7fae778c0eb2292028a5",
      "tree": "32649aaec154868225c4a29ed2869da1b07b5bc1",
      "parents": [
        "e6fdf2423eb131d8f6a4ba712d0fa3e778b64e21"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Wed Jul 20 14:01:16 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Wed Jul 20 14:01:16 2016"
      },
      "message": "Added support for listening an an ephemeral port and for dynamically changing the connection profile at runtime through stdin\n"
    },
    {
      "commit": "e6fdf2423eb131d8f6a4ba712d0fa3e778b64e21",
      "tree": "abc4e9b45214144d566febaf89a91929ec108eb5",
      "parents": [
        "317f5ae5e264c78734743154d4fe3282aa99bb10"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Wed Jun 29 17:34:21 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Wed Jun 29 17:34:21 2016"
      },
      "message": "Added an option to enable remapping of connections already bound to localhost and to bypass mappings for localhost by default\n"
    },
    {
      "commit": "317f5ae5e264c78734743154d4fe3282aa99bb10",
      "tree": "9371e5b6ec8bf49efdd19c1dade00db0fe06f83c",
      "parents": [
        "6317ca112316c7896274b8a9cbf4fa8eef11f71f"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Wed Jun 29 16:55:21 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Wed Jun 29 16:55:21 2016"
      },
      "message": "Fixed a recursion problem with error handling\n"
    },
    {
      "commit": "6317ca112316c7896274b8a9cbf4fa8eef11f71f",
      "tree": "545d7a2cb63a201b570df6a8c992884bc10fa159",
      "parents": [
        "8692ea4999dfa2ea0cc0b66d08b3773ebe656193"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Tue Jun 28 20:01:22 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Tue Jun 28 20:01:22 2016"
      },
      "message": "updated readme\n"
    },
    {
      "commit": "8692ea4999dfa2ea0cc0b66d08b3773ebe656193",
      "tree": "0abfc4af6c975e7b83ebec6831cf2a4a6b11ca2e",
      "parents": [
        "4f729fc1cb7b7da1c17708264628d650a5ee6a3f"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Tue Jun 28 20:00:09 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Tue Jun 28 20:00:09 2016"
      },
      "message": "Added support for remapping outbound ports\n"
    },
    {
      "commit": "4f729fc1cb7b7da1c17708264628d650a5ee6a3f",
      "tree": "aea01f52f454d767ad9e0ce97838071c7b12686f",
      "parents": [
        "93bcde8001b1fe2b6f8fe22f8a5d1f16e532ee00"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Thu May 26 15:14:00 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Thu May 26 15:14:00 2016"
      },
      "message": "Adjust the configured bandwidth to account for TCP/IP packet overhead\n"
    },
    {
      "commit": "93bcde8001b1fe2b6f8fe22f8a5d1f16e532ee00",
      "tree": "288b4600657f5366271b8eef1ee8245097db1a82",
      "parents": [
        "c22d8c8345736ca1abb3d193b6de102398c029ea",
        "1e12d1a65af690fb026efd9dec4c2d2a13593466"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Thu May 26 13:17:11 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Thu May 26 13:17:11 2016"
      },
      "message": "Merge branch \u0027master\u0027 of github.com:WPO-Foundation/tsproxy\n"
    },
    {
      "commit": "c22d8c8345736ca1abb3d193b6de102398c029ea",
      "tree": "5c78d63674d5349aa64433d1d89292d01c3c40cb",
      "parents": [
        "5b2f8172d5938f6c858a000f17bc1beda277fd63"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Thu May 26 13:17:05 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Thu May 26 13:17:05 2016"
      },
      "message": "Cleaned up some spurious semicolons at the end of lines (c++ habits die hard)\n"
    },
    {
      "commit": "1e12d1a65af690fb026efd9dec4c2d2a13593466",
      "tree": "fc9a674718c8b860b3a377e88bea46bf44707e32",
      "parents": [
        "028f9d41d68f257f4c5e4d38f547bb7293a4c118"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "patmeenan@gmail.com",
        "time": "Thu May 26 13:15:15 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "patmeenan@gmail.com",
        "time": "Thu May 26 13:15:15 2016"
      },
      "message": "Update README.md"
    },
    {
      "commit": "028f9d41d68f257f4c5e4d38f547bb7293a4c118",
      "tree": "bff61a7b2927f2776cd1e68334c0d4af05c7db17",
      "parents": [
        "5b2f8172d5938f6c858a000f17bc1beda277fd63"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "patmeenan@gmail.com",
        "time": "Thu May 26 13:14:17 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "patmeenan@gmail.com",
        "time": "Thu May 26 13:14:17 2016"
      },
      "message": "Update README.md"
    },
    {
      "commit": "5b2f8172d5938f6c858a000f17bc1beda277fd63",
      "tree": "480ba1c2b7ab63a864ef50ec70224439919d9a68",
      "parents": [
        "ea9b3431058fcc4c7e8df79217abb5b65d7c5221"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Thu May 26 13:11:40 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Thu May 26 13:11:40 2016"
      },
      "message": "Made the startup message appear regardless of debug verbosity\n"
    },
    {
      "commit": "ea9b3431058fcc4c7e8df79217abb5b65d7c5221",
      "tree": "eaf8204e3194d3cde3bf3ea37c18464dc3fb0d36",
      "parents": [
        "98ff8560b9d6418a60bc35253fa2539b50f17c67"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Thu May 26 13:08:28 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Thu May 26 13:08:28 2016"
      },
      "message": "Added logic to detect when the port is already in use\n"
    },
    {
      "commit": "98ff8560b9d6418a60bc35253fa2539b50f17c67",
      "tree": "75ea173645f6744ab561f28193ba94ae136f5daf",
      "parents": [
        "416f786a142e23ec22068387d56cf680c5d34d15"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Thu May 26 12:59:29 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Thu May 26 12:59:29 2016"
      },
      "message": "Added support for emulating TCP congestion/flow control and slow start\n"
    },
    {
      "commit": "416f786a142e23ec22068387d56cf680c5d34d15",
      "tree": "b9aa08de49aac252f65c4106248823f8a2ef66a1",
      "parents": [
        "8a5cd507e5bcd2c4ce3bbb900e855a80644300f6"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Thu May 26 12:22:32 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Thu May 26 12:22:32 2016"
      },
      "message": "Fixed #1 - Added support for redirection connections to a specific host\n"
    },
    {
      "commit": "8a5cd507e5bcd2c4ce3bbb900e855a80644300f6",
      "tree": "7752ddc5033cc4ab7e77460db6da4cd7d01c1bfc",
      "parents": [
        "41ac32891a42fe83e47a0c49d5ecacd2e15fd57f"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "patmeenan@gmail.com",
        "time": "Wed May 25 22:42:18 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "patmeenan@gmail.com",
        "time": "Wed May 25 22:42:18 2016"
      },
      "message": "Update README.md"
    },
    {
      "commit": "41ac32891a42fe83e47a0c49d5ecacd2e15fd57f",
      "tree": "b4a4dddcb0e8f947f5b18c63847252b433918f4f",
      "parents": [
        "ff6d2b8f1f21bef4e989dbf29f8eda040d41fe11"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Wed May 25 21:33:00 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Wed May 25 21:33:00 2016"
      },
      "message": "Latency and bandwidth shaping now work\n"
    },
    {
      "commit": "ff6d2b8f1f21bef4e989dbf29f8eda040d41fe11",
      "tree": "0b60d85cf3d9be272fcc061777ca1c37ab07ec05",
      "parents": [
        "f6ac2c56c269c22a2cee7fd4d772155f4b698668"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Tue May 24 18:57:26 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Tue May 24 18:57:26 2016"
      },
      "message": "Made DNS lookups threaded/async and switched to a real message queue for the pipes\n"
    },
    {
      "commit": "f6ac2c56c269c22a2cee7fd4d772155f4b698668",
      "tree": "7137a80f595c045143bed51e6f23f894645f5910",
      "parents": [
        "35f70ddd3ec65c48cc444709e1ddb9b532869d61"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Tue May 24 16:57:21 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Tue May 24 16:57:21 2016"
      },
      "message": "Working in straight passthrough mode\n"
    },
    {
      "commit": "35f70ddd3ec65c48cc444709e1ddb9b532869d61",
      "tree": "05f72ecec956a81dc2989b62e046391686b01ce5",
      "parents": [
        "ffe5c920a12bb80eb84dd15bbb47e654d1daa847"
      ],
      "author": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Mon May 23 19:32:26 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "pmeenan@chromium.org",
        "time": "Mon May 23 19:32:26 2016"
      },
      "message": "Initial plumbing\n"
    },
    {
      "commit": "ffe5c920a12bb80eb84dd15bbb47e654d1daa847",
      "tree": "cc50f285b57d89ab0ed6e87ce65eb9b664a08e70",
      "parents": [],
      "author": {
        "name": "Patrick Meenan",
        "email": "patmeenan@gmail.com",
        "time": "Mon May 23 15:40:27 2016"
      },
      "committer": {
        "name": "Patrick Meenan",
        "email": "patmeenan@gmail.com",
        "time": "Mon May 23 15:40:27 2016"
      },
      "message": "Initial commit"
    }
  ]
}
