{"push_id":1431669201,"size":175,"distinct_size":175,"ref":"refs/heads/master","head":"9530ab5183ab8f5ac841e566905b0cb66c3dcaac","before":"edb03632b5e38811d4c202e35bb8b9a5c98621fc","commits":[{"sha":"2386ae2c59dac1e8e860659fc0bcf1925afbd0a3","author":{"name":"Daniel Mendel","email":"4b94a04674ad2c69d990e94ab196ac3f8e9e03d4@danielespeset.com"},"message":"Cleans up directory structure\n\n- Moves each module into own directory\n- Moves all examples into example directory ( to be run from root dir )\n- Changes minor dependency structures to support new tree\n- Changes WebSocket type id from Int32 to Int for Endian agnostism","distinct":true,"url":"https://api.github.com/repos/JuliaWeb/HTTP.jl/commits/2386ae2c59dac1e8e860659fc0bcf1925afbd0a3"},{"sha":"4b22df788679003ddb5edd6bb7c612114d878a87","author":{"name":"Zachary Allaun","email":"bd6bd4bfd0fc42b4e28fe6c9ae9983daab582fa4@gmail.com"},"message":"Cleans up code and adds default response data\n\n- remove trailing whitespace\n- default response data for status-only Response(Int) and Response(Int, String)\n- various syntax changes for clarity","distinct":true,"url":"https://api.github.com/repos/JuliaWeb/HTTP.jl/commits/4b22df788679003ddb5edd6bb7c612114d878a87"},{"sha":"29b7af960bdf114d299c6e5c72facb568d4f4a3d","author":{"name":"Zachary Allaun","email":"bd6bd4bfd0fc42b4e28fe6c9ae9983daab582fa4@gmail.com"},"message":"Adds Httplib and decouples Websockets, Http, et al\n\n- Changes the request and client handling API to use new functions\n  `handle` and `is_websocket_handshake` that dispatch on the handler.\n- Http exposes a WebsocketInterface abstract type with default\n  implementations of these functions that throw errors.\n- Websockets implements these for a WebsocketHandler, which it defines.\n- In addition, generic stuff like Request, Response, Headers, et al.\n  have been moved to an Httplib module.","distinct":true,"url":"https://api.github.com/repos/JuliaWeb/HTTP.jl/commits/29b7af960bdf114d299c6e5c72facb568d4f4a3d"},{"sha":"c13313ca917b4734680ceefae762fbbb4b885022","author":{"name":"Zachary Allaun","email":"bd6bd4bfd0fc42b4e28fe6c9ae9983daab582fa4@gmail.com"},"message":"Cleans up code and adds default response data\n\n- remove trailing whitespace\n- default response data for status-only Response(Int) and Response(Int, String)\n- various syntax changes for clarity","distinct":true,"url":"https://api.github.com/repos/JuliaWeb/HTTP.jl/commits/c13313ca917b4734680ceefae762fbbb4b885022"},{"sha":"668bec51e7503d2e6b2177257e1b9d0bf6b40aec","author":{"name":"Zachary Allaun","email":"bd6bd4bfd0fc42b4e28fe6c9ae9983daab582fa4@gmail.com"},"message":"Adds Httplib and decouples Websockets, Http, et al\n\n- Changes the request and client handling API to use new functions\n  `handle` and `is_websocket_handshake` that dispatch on the handler.\n- Http exposes a WebsocketInterface abstract type with default\n  implementations of these functions that throw errors.\n- Websockets implements these for a WebsocketHandler, which it defines.\n- In addition, generic stuff like Request, Response, Headers, et al.\n  have been moved to an Httplib module.","distinct":true,"url":"https://api.github.com/repos/JuliaWeb/HTTP.jl/commits/668bec51e7503d2e6b2177257e1b9d0bf6b40aec"},{"sha":"280674df822db0d7621737ac26e105634b892d85","author":{"name":"Daniel Mendel","email":"4b94a04674ad2c69d990e94ab196ac3f8e9e03d4@danielespeset.com"},"message":"Adds documentation and slight refactoring to Http\n\n- Moves GC method `clean!` from callback to below blocking loop in `process_client`\n- Adds explicit types to `WebsocketInterface` methods\n- Verbose documentation","distinct":true,"url":"https://api.github.com/repos/JuliaWeb/HTTP.jl/commits/280674df822db0d7621737ac26e105634b892d85"},{"sha":"5d7ddc9ac1a8c89b66f3ae564a88ba3d096db120","author":{"name":"Daniel Mendel","email":"4b94a04674ad2c69d990e94ab196ac3f8e9e03d4@danielespeset.com"},"message":"Reformats documentation to 80 char width.","distinct":true,"url":"https://api.github.com/repos/JuliaWeb/HTTP.jl/commits/5d7ddc9ac1a8c89b66f3ae564a88ba3d096db120"},{"sha":"8f66c15615a2c5179c1cee846f553cc61165d9a8","author":{"name":"Daniel Mendel","email":"4b94a04674ad2c69d990e94ab196ac3f8e9e03d4@danielespeset.com"},"message":"Makes Request type mutable, removes PartialRequest","distinct":true,"url":"https://api.github.com/repos/JuliaWeb/HTTP.jl/commits/8f66c15615a2c5179c1cee846f553cc61165d9a8"},{"sha":"6261a366b1ab9db345ad26be631880f002b1585a","author":{"name":"Daniel Mendel","email":"4b94a04674ad2c69d990e94ab196ac3f8e9e03d4@danielespeset.com"},"message":"Fleshes out documentation for RequestParser\n\nGroups cfunction calls together under Julia function definitions.","distinct":true,"url":"https://api.github.com/repos/JuliaWeb/HTTP.jl/commits/6261a366b1ab9db345ad26be631880f002b1585a"},{"sha":"b08afa9521606d31fda9f29481324a8e975a901f","author":{"name":"Daniel Mendel","email":"4b94a04674ad2c69d990e94ab196ac3f8e9e03d4@danielespeset.com"},"message":"Merge branch 'doc1' by way of 'doc2'\n\nCloses #36","distinct":true,"url":"https://api.github.com/repos/JuliaWeb/HTTP.jl/commits/b08afa9521606d31fda9f29481324a8e975a901f"},{"sha":"b91737ee820be75207b6d0f4c872ff5251d51179","author":{"name":"Daniel Mendel","email":"4b94a04674ad2c69d990e94ab196ac3f8e9e03d4@danielespeset.com"},"message":"Fixes broken RequestParser.\n\nMerge fail – how embarassing!","distinct":true,"url":"https://api.github.com/repos/JuliaWeb/HTTP.jl/commits/b91737ee820be75207b6d0f4c872ff5251d51179"},{"sha":"16bd0d309b69dc3a49e0b731de265a93c315d41f","author":{"name":"Daniel Mendel","email":"4b94a04674ad2c69d990e94ab196ac3f8e9e03d4@danielespeset.com"},"message":"Adds Content-Length & trailing newlines.","distinct":true,"url":"https://api.github.com/repos/JuliaWeb/HTTP.jl/commits/16bd0d309b69dc3a49e0b731de265a93c315d41f"},{"sha":"240898c7592e8d98a4f97df7f398104a610f3bc4","author":{"name":"Daniel Mendel","email":"4b94a04674ad2c69d990e94ab196ac3f8e9e03d4@danielespeset.com"},"message":"Fixes memory leak with parser's global partials.\n\nThe previous methodology with `clean!` was flawed and only\ncleaning up the `message_complete_callbacks`. This can be seen\nusing the following test server:\n\n    using Http\n    http = HttpHandler() do req::Request, res::Response\n\t\"$(length(Http.partials)) $(length(Http.message_complete_callbacks))\"\n    end\n    server = Server(http)\n    run(server, 8000)\n\nThen:\n\n    > curl http://localhost:8000\n    > 1 1\n    > curl http://localhost:8000\n    > 2 1\n    > curl http://localhost:8000\n    > 3 1\n    > weighttp -n 500 localhost:8000\n    > ...\n    > curl http://localhost:8000\n    > 503 1\n\nIt seems that the `clean!` method was not correctly finding\nthe `parser` pointer key in `partials` – since the key is being\nset in C-land by `on_message_begin`.  As such, it seems to make\nmorei sense to do the cleanup in the `on_message_complete` C callback,\nso that the full life-cycle of the global partials can be handled\ninside the C callbacks.  Additionally, while the `message_complete_callback`\nwill remain the same for the duration of a given client connection,\nthe partial really is only good for a single request.\n\nOf course, this could still potentially leak memory if requests are made\nthat never finish and end up calling `on_message_begin` but never call\n`on_message_complete`. If we could find a way to get the `parser`\nkey from inside `clean!` it could make a good failsafe, otherwise\nwe may want to institute some kind of nth request garbage collector\nfunction just to be sure.","distinct":true,"url":"https://api.github.com/repos/JuliaWeb/HTTP.jl/commits/240898c7592e8d98a4f97df7f398104a610f3bc4"},{"sha":"a95078c64d65455d9566c4f5270cc614b7d26993","author":{"name":"Daniel Mendel","email":"4b94a04674ad2c69d990e94ab196ac3f8e9e03d4@danielespeset.com"},"message":"Removes unnecessary newlines from response.","distinct":true,"url":"https://api.github.com/repos/JuliaWeb/HTTP.jl/commits/a95078c64d65455d9566c4f5270cc614b7d26993"},{"sha":"f4741077258f831f0c3e46739776f63644ec8172","author":{"name":"Daniel Mendel","email":"4b94a04674ad2c69d990e94ab196ac3f8e9e03d4@danielespeset.com"},"message":"Fixes memory leak with parser's global partials.\n\nThe previous methodology with `clean!` was flawed and only\ncleaning up the `message_complete_callbacks`. This can be seen\nusing the following test server:\n\n    using Http\n    http = HttpHandler() do req::Request, res::Response\n\t\"$(length(Http.partials)) $(length(Http.message_complete_callbacks))\"\n    end\n    server = Server(http)\n    run(server, 8000)\n\nThen:\n\n    > curl http://localhost:8000\n    > 1 1\n    > curl http://localhost:8000\n    > 2 1\n    > curl http://localhost:8000\n    > 3 1\n    > weighttp -n 500 localhost:8000\n    > ...\n    > curl http://localhost:8000\n    > 503 1\n\nIt seems that the `clean!` method was not correctly finding\nthe `parser` pointer key in `partials` – since the key is being\nset in C-land by `on_message_begin`.  As such, it seems to make\nmorei sense to do the cleanup in the `on_message_complete` C callback,\nso that the full life-cycle of the global partials can be handled\ninside the C callbacks.  Additionally, while the `message_complete_callback`\nwill remain the same for the duration of a given client connection,\nthe partial really is only good for a single request.\n\nOf course, this could still potentially leak memory if requests are made\nthat never finish and end up calling `on_message_begin` but never call\n`on_message_complete`. If we could find a way to get the `parser`\nkey from inside `clean!` it could make a good failsafe, otherwise\nwe may want to institute some kind of nth request garbage collector\nfunction just to be sure.","distinct":true,"url":"https://api.github.com/repos/JuliaWeb/HTTP.jl/commits/f4741077258f831f0c3e46739776f63644ec8172"},{"sha":"1ef8201be0c0d15bd144659f7d483e586b61854b","author":{"name":"Daniel Mendel","email":"4b94a04674ad2c69d990e94ab196ac3f8e9e03d4@danielespeset.com"},"message":"Merge branch 'fix-memory-leak'","distinct":true,"url":"https://api.github.com/repos/JuliaWeb/HTTP.jl/commits/1ef8201be0c0d15bd144659f7d483e586b61854b"},{"sha":"d0957bd697e70f9d8789fb9a0c1fafaef55780d8","author":{"name":"Daniel Mendel","email":"4b94a04674ad2c69d990e94ab196ac3f8e9e03d4@danielespeset.com"},"message":"Fixes memory leak with parser's global partials.\n\nThe previous methodology with `clean!` was flawed and only\ncleaning up the `message_complete_callbacks`. This can be seen\nusing the following test server:\n\n    using Http\n    http = HttpHandler() do req::Request, res::Response\n\t\"$(length(Http.partials)) $(length(Http.message_complete_callbacks))\"\n    end\n    server = Server(http)\n    run(server, 8000)\n\nThen:\n\n    > curl http://localhost:8000\n    > 1 1\n    > curl http://localhost:8000\n    > 2 1\n    > curl http://localhost:8000\n    > 3 1\n    > weighttp -n 500 localhost:8000\n    > ...\n    > curl http://localhost:8000\n    > 503 1\n\nIt seems that the `clean!` method was not correctly finding\nthe `parser` pointer key in `partials` – since the key is being\nset in C-land by `on_message_begin`.  As such, it seems to make\nmorei sense to do the cleanup in the `on_message_complete` C callback,\nso that the full life-cycle of the global partials can be handled\ninside the C callbacks.  Additionally, while the `message_complete_callback`\nwill remain the same for the duration of a given client connection,\nthe partial really is only good for a single request.\n\nOf course, this could still potentially leak memory if requests are made\nthat never finish and end up calling `on_message_begin` but never call\n`on_message_complete`. If we could find a way to get the `parser`\nkey from inside `clean!` it could make a good failsafe, otherwise\nwe may want to institute some kind of nth request garbage collector\nfunction just to be sure.","distinct":true,"url":"https://api.github.com/repos/JuliaWeb/HTTP.jl/commits/d0957bd697e70f9d8789fb9a0c1fafaef55780d8"},{"sha":"60538f2286c51170f3dfa64fea72dcd466ff99fc","author":{"name":"Daniel Mendel","email":"4b94a04674ad2c69d990e94ab196ac3f8e9e03d4@danielespeset.com"},"message":"Merge branch 'master' of github.com:hackerschool/webstack.jl","distinct":true,"url":"https://api.github.com/repos/JuliaWeb/HTTP.jl/commits/60538f2286c51170f3dfa64fea72dcd466ff99fc"},{"sha":"58d62a4573e3ef94d2a0b67ddb1563421bf7f077","author":{"name":"Daniel Mendel","email":"4b94a04674ad2c69d990e94ab196ac3f8e9e03d4@danielespeset.com"},"message":"Changes depreciated wait_accept to new accept","distinct":true,"url":"https://api.github.com/repos/JuliaWeb/HTTP.jl/commits/58d62a4573e3ef94d2a0b67ddb1563421bf7f077"},{"sha":"fa8d27c0fa21a4f2920a1ecb9a6f1edebed75374","author":{"name":"Daniel Mendel","email":"4b94a04674ad2c69d990e94ab196ac3f8e9e03d4@danielespeset.com"},"message":"Adds keep alive support\n\n- Cleans up comments by removing obvious notes\n- Moves \"close\" event to process_client","distinct":true,"url":"https://api.github.com/repos/JuliaWeb/HTTP.jl/commits/fa8d27c0fa21a4f2920a1ecb9a6f1edebed75374"}]}
{"actor":{"display_login":"quinnj"}}