{"push_id":2128470876,"size":1000,"distinct_size":393,"ref":"refs/heads/shadowsocks-android","head":"f29f07bc8c43eec96f227e6f6eede32b3af66168","before":"359ca847a649b9c318f9217c0755484d98ecb779","commits":[{"sha":"e0aa08666eecdab5467770ed0753f1f330ced76e","author":{"name":"Nick Mathewson","email":"4d7bd3dc2db726dd2ba94fd58cd6655f7eaf2268@torproject.org"},"message":"Merge remote-tracking branch 'github/patches-2.0'\n\nConflicts:\n\ttest/regress.c","distinct":false,"url":"https://api.github.com/repos/shadowsocks/libevent/commits/e0aa08666eecdab5467770ed0753f1f330ced76e"},{"sha":"981aa0efc98bb19e0c1ec0889046ac6df056441e","author":{"name":"Nick Mathewson","email":"4d7bd3dc2db726dd2ba94fd58cd6655f7eaf2268@torproject.org"},"message":"Merge remote-tracking branch 'origin/patches-2.0'","distinct":false,"url":"https://api.github.com/repos/shadowsocks/libevent/commits/981aa0efc98bb19e0c1ec0889046ac6df056441e"},{"sha":"cba59e53253bb396f192e40a002c6dd9835df51c","author":{"name":"Nick Mathewson","email":"4d7bd3dc2db726dd2ba94fd58cd6655f7eaf2268@torproject.org"},"message":"Refactor the callback part of an event into its own event_callback type\n\nThis shouldn't have any visible effect, but it's necessary or\nadvisible for a few changes and cleanups I would like to make,\nincluding:\n   * Replacing the deferred queue with a type that works more as if it\n     were an event.\n   * Introducing a useful \"activate this on the next round through the\n     event loop\" state for events and deferreds.\n   * Adding an \"on until further notice\" status for events, to allow a\n     saner win32-hybrid approach.\n   * Eventually, making all user callbacks first-class things with\n     event-like semantics.","distinct":false,"url":"https://api.github.com/repos/shadowsocks/libevent/commits/cba59e53253bb396f192e40a002c6dd9835df51c"},{"sha":"9889a3d883d99c644f00398c3a6a11a9037e8117","author":{"name":"Nick Mathewson","email":"4d7bd3dc2db726dd2ba94fd58cd6655f7eaf2268@torproject.org"},"message":"Remove the unused bits from EVLIST_ALL","distinct":false,"url":"https://api.github.com/repos/shadowsocks/libevent/commits/9889a3d883d99c644f00398c3a6a11a9037e8117"},{"sha":"745a63dba33c53440064908f086bb739aa9c4bb3","author":{"name":"Nick Mathewson","email":"4d7bd3dc2db726dd2ba94fd58cd6655f7eaf2268@torproject.org"},"message":"Add \"active later\" event_callbacks to supersede deferred\n\nAn event or event callback can now be in an additional state: \"active\nlater\".  When an event is in this state, it will become active the\nnext time we run through the event loop.  This lets us do what we\nwanted to with deferred callbacks: make a type of active thing that\navoids infinite circular regress in a way that starves other events or\nexhausts the stack.  It improves on deferred callbacks by respecting\npriorities, and by having a non-kludgy way to avoid event starvation.","distinct":false,"url":"https://api.github.com/repos/shadowsocks/libevent/commits/745a63dba33c53440064908f086bb739aa9c4bb3"},{"sha":"fec8bae2673966325eeaabc3fc1af60b584abb1a","author":{"name":"Nick Mathewson","email":"4d7bd3dc2db726dd2ba94fd58cd6655f7eaf2268@torproject.org"},"message":"event_base_assert_ok: check value of event_active_count for correctness","distinct":false,"url":"https://api.github.com/repos/shadowsocks/libevent/commits/fec8bae2673966325eeaabc3fc1af60b584abb1a"},{"sha":"ae2b84b2575be93d0aebba5c0b78453836f89f3c","author":{"name":"Nick Mathewson","email":"4d7bd3dc2db726dd2ba94fd58cd6655f7eaf2268@torproject.org"},"message":"Replace deferred_cbs with event_callback-based implementation.","distinct":false,"url":"https://api.github.com/repos/shadowsocks/libevent/commits/ae2b84b2575be93d0aebba5c0b78453836f89f3c"},{"sha":"a4079aa88a5d4bd70ad3c74f83460e1a0a40772d","author":{"name":"Nick Mathewson","email":"4d7bd3dc2db726dd2ba94fd58cd6655f7eaf2268@torproject.org"},"message":"Replace more deferred_cb names with event_callback","distinct":false,"url":"https://api.github.com/repos/shadowsocks/libevent/commits/a4079aa88a5d4bd70ad3c74f83460e1a0a40772d"},{"sha":"f90e25593c29258e440e2d84e85bc5ddba4e16bd","author":{"name":"Nick Mathewson","email":"4d7bd3dc2db726dd2ba94fd58cd6655f7eaf2268@torproject.org"},"message":"New event_get_priority() function to return an event's priority","distinct":false,"url":"https://api.github.com/repos/shadowsocks/libevent/commits/f90e25593c29258e440e2d84e85bc5ddba4e16bd"},{"sha":"bd395549a3a148aa143afda27aa03907c5e5c73c","author":{"name":"Nick Mathewson","email":"4d7bd3dc2db726dd2ba94fd58cd6655f7eaf2268@torproject.org"},"message":"Add a bufferevent_get_priority() function","distinct":false,"url":"https://api.github.com/repos/shadowsocks/libevent/commits/bd395549a3a148aa143afda27aa03907c5e5c73c"},{"sha":"c46cb9c3a2ab8256fc1ae8035c4d967e16b69c04","author":{"name":"Nick Mathewson","email":"4d7bd3dc2db726dd2ba94fd58cd6655f7eaf2268@torproject.org"},"message":"Make event_base_getnpriorities work with old \"implicit base\" code","distinct":false,"url":"https://api.github.com/repos/shadowsocks/libevent/commits/c46cb9c3a2ab8256fc1ae8035c4d967e16b69c04"},{"sha":"581b5beb98f45ec73ade6c8026f4fadef4325d4b","author":{"name":"Nick Mathewson","email":"4d7bd3dc2db726dd2ba94fd58cd6655f7eaf2268@torproject.org"},"message":"Give event_base_process_active a single exit path","distinct":false,"url":"https://api.github.com/repos/shadowsocks/libevent/commits/581b5beb98f45ec73ade6c8026f4fadef4325d4b"},{"sha":"c0e425abdcfc883fa70b6deafdf7327bfb75f02d","author":{"name":"Nick Mathewson","email":"4d7bd3dc2db726dd2ba94fd58cd6655f7eaf2268@torproject.org"},"message":"Restore our priority-inversion-prevention code with deferreds\n\nBack when deferred_cb stuff had its own queue, the queue was always\nexecuted, but we never ran more than 16 callbacks per iteration.\nThat made for two problems:\n\n1: Because deferred_cb stuff would always run, and had no priority,\nit could cause priority inversion.\n\n2: It doesn't respect the max_dispatch_interval code.\n\nThen, when I refactored deferred_cb to be a special case of\nevent_callback, that solved the above issues, but made for two more\nissues:\n\n3: Because deferred_cb stuff would always get the default priority,\nit could could low-priority bufferevents to get too much priority.\n\n4: With code like bufferevent_pair, it's easy to get into a\nsituation where two deferreds keep adding one another, preventing\nthe event loop from ever actually scanning for more events.\n\nThis commit fixes the above by giving deferreds a better notion of\npriorities, and by limiting the number of deferreds that can be\nadded to the _current_ loop iteration's active queues.  (Extra\ndeferreds are put into the active_later state.)\n\nThat isn't an all-purpose priority inversion solution, of course: for\nthat, you may need to mess around with max_dispatch_interval.","distinct":false,"url":"https://api.github.com/repos/shadowsocks/libevent/commits/c0e425abdcfc883fa70b6deafdf7327bfb75f02d"},{"sha":"7d6aa5ee68962f91de3690ce4bb39ec7c9776e9e","author":{"name":"Nick Mathewson","email":"4d7bd3dc2db726dd2ba94fd58cd6655f7eaf2268@torproject.org"},"message":"Add an event_base_loopcontinue() to tell libevent to rescan right away","distinct":false,"url":"https://api.github.com/repos/shadowsocks/libevent/commits/7d6aa5ee68962f91de3690ce4bb39ec7c9776e9e"},{"sha":"e65914fdfe251175f518404bafa05ed8bb0abd6a","author":{"name":"Ross Lagerwall","email":"065916f613ad2a2d30fab43b6dd3f56f20961a61@gmail.com"},"message":"Remove unnecessary code in configure.in.","distinct":false,"url":"https://api.github.com/repos/shadowsocks/libevent/commits/e65914fdfe251175f518404bafa05ed8bb0abd6a"},{"sha":"371efebdc3c7b46ae833bcaafc1d65abc235b38c","author":{"name":"Nick Mathewson","email":"4d7bd3dc2db726dd2ba94fd58cd6655f7eaf2268@torproject.org"},"message":"Be more clear that LEV_OPT_DEFERRED_ACCEPT has tricky prereqs","distinct":false,"url":"https://api.github.com/repos/shadowsocks/libevent/commits/371efebdc3c7b46ae833bcaafc1d65abc235b38c"},{"sha":"6fab9eef8faca783f949da53fa4efa7590bd2ed3","author":{"name":"Nick Mathewson","email":"4d7bd3dc2db726dd2ba94fd58cd6655f7eaf2268@torproject.org"},"message":"Add caveat to docs about bufferevent_free() with data in outbuf\n\nBased on libevent-users thread wtih Alexander Klauer","distinct":false,"url":"https://api.github.com/repos/shadowsocks/libevent/commits/6fab9eef8faca783f949da53fa4efa7590bd2ed3"},{"sha":"9444524f85c43f1e881384131401210ccf6d593b","author":{"name":"Nick Mathewson","email":"4d7bd3dc2db726dd2ba94fd58cd6655f7eaf2268@torproject.org"},"message":"Make it more clear that NOLOCK means \"I promise, no multithreading\"","distinct":false,"url":"https://api.github.com/repos/shadowsocks/libevent/commits/9444524f85c43f1e881384131401210ccf6d593b"},{"sha":"76b994ac61e1bb6fb374bf6c178bfd0edb09f6ee","author":{"name":"Nick Mathewson","email":"4d7bd3dc2db726dd2ba94fd58cd6655f7eaf2268@freehaven.net"},"message":"Merge pull request #54 from rosslagerwall/configure-dup\n\nRemove unnecessary code in configure.in.","distinct":false,"url":"https://api.github.com/repos/shadowsocks/libevent/commits/76b994ac61e1bb6fb374bf6c178bfd0edb09f6ee"},{"sha":"f1284e73bd385dabba19e0b08f7be58014a5368b","author":{"name":"Nick Mathewson","email":"4d7bd3dc2db726dd2ba94fd58cd6655f7eaf2268@torproject.org"},"message":"Merge remote-tracking branch 'origin/patches-2.0'\n\nConflicts:\n\tevutil_rand.c\n\nHad conflicts with _EVENT_ -> EVENT__ change.","distinct":false,"url":"https://api.github.com/repos/shadowsocks/libevent/commits/f1284e73bd385dabba19e0b08f7be58014a5368b"}]}
{"actor":{"display_login":"Mygod"}}