{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":567805185,"defaultBranch":"master","name":"martian","ownerLogin":"saucelabs","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2022-11-18T16:09:26.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/88837?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1697638783.0","currentOid":""},"activityList":{"items":[{"before":"d486a7d6c7f0695d6b6a61f8a9c0c1bf685921ba","after":null,"ref":"refs/heads/mmt/windows","pushedAt":"2023-10-18T14:19:43.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"}},{"before":"cb735e15918725518c920d897c2d776b2e4241a6","after":"5710d41918578d0def15f5691822cb233286b116","ref":"refs/heads/branch-4.9","pushedAt":"2023-10-18T14:19:41.000Z","pushType":"pr_merge","commitsCount":10,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"},"commit":{"message":"Update TestReadHeaderTimeout","shortMessageHtmlLink":"Update TestReadHeaderTimeout"}},{"before":"9370c3807f547c53aa9dec955348185b15e2b898","after":"d486a7d6c7f0695d6b6a61f8a9c0c1bf685921ba","ref":"refs/heads/mmt/windows","pushedAt":"2023-10-18T13:38:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"},"commit":{"message":"Update TestReadHeaderTimeout","shortMessageHtmlLink":"Update TestReadHeaderTimeout"}},{"before":"97a174dad2c2fe691e1bee5e3a582c4f5bfad4d6","after":"9370c3807f547c53aa9dec955348185b15e2b898","ref":"refs/heads/mmt/windows","pushedAt":"2023-10-18T13:24:39.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"},"commit":{"message":"martian: copySync check isClosedConnError instead of just io.EOF\n\nThis prevents errors like:\n\n2023/10/18 19:20:55.555725 [proxy] [ERROR] [311-4a41114c] failed to copy inbound CONNECT tunnel: readfrom tcp [::1]:3128->[::1]:59599: write tcp [::1]:3128->[::1]:59599: wasend: An established connection was aborted by the software in your host machine.\n\nbeing logged on Windows.","shortMessageHtmlLink":"martian: copySync check isClosedConnError instead of just io.EOF"}},{"before":null,"after":"97a174dad2c2fe691e1bee5e3a582c4f5bfad4d6","ref":"refs/heads/mmt/windows","pushedAt":"2023-10-17T14:25:05.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"},"commit":{"message":"martian: move readRequest error logging to handle\n\nThis allows to handle errors from both peeking connection and reading request.\nIt also removes side effects from the readRequest function.","shortMessageHtmlLink":"martian: move readRequest error logging to handle"}},{"before":"b6c6cd5c1101b2d2e6b37db0c9a2d2af9d71b497","after":null,"ref":"refs/heads/mmt/4.9-backports","pushedAt":"2023-10-17T12:59:47.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"}},{"before":"ea44edb2cad941ddb82346302bf63bdc0c6f7a70","after":"cb735e15918725518c920d897c2d776b2e4241a6","ref":"refs/heads/branch-4.9","pushedAt":"2023-10-17T12:59:46.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"},"commit":{"message":"Look for closeWriter in io.Writer fields\n\nThis allows to propagate half-close in situations where there is a real TCP connection hidden in a struct field (sometimes also hidden by an interface).\n\nA practical example can be http.readWriteCloserBody.\n\n// readWriteCloserBody is the Response.Body type used when we want to\n// give users write access to the Body through the underlying\n// connection (TCP, unless using custom dialers). This is then\n// the concrete type for a Response.Body on the 101 Switching\n// Protocols response, as used by WebSockets, h2c, etc.\ntype readWriteCloserBody struct {\n\t_ incomparable\n\tbr *bufio.Reader // used until empty\n\tio.ReadWriteCloser\n}\n\n(cherry picked from commit df9ca5eb912efb276323a09c064b8b26d2342629)","shortMessageHtmlLink":"Look for closeWriter in io.Writer fields"}},{"before":null,"after":"b6c6cd5c1101b2d2e6b37db0c9a2d2af9d71b497","ref":"refs/heads/mmt/4.9-backports","pushedAt":"2023-10-12T08:51:35.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"},"commit":{"message":"Look for closeWriter in io.Writer fields\n\nThis allows to propagate half-close in situations where there is a real TCP connection hidden in a struct field (sometimes also hidden by an interface).\n\nA practical example can be http.readWriteCloserBody.\n\n// readWriteCloserBody is the Response.Body type used when we want to\n// give users write access to the Body through the underlying\n// connection (TCP, unless using custom dialers). This is then\n// the concrete type for a Response.Body on the 101 Switching\n// Protocols response, as used by WebSockets, h2c, etc.\ntype readWriteCloserBody struct {\n\t_ incomparable\n\tbr *bufio.Reader // used until empty\n\tio.ReadWriteCloser\n}\n\n(cherry picked from commit df9ca5eb912efb276323a09c064b8b26d2342629)","shortMessageHtmlLink":"Look for closeWriter in io.Writer fields"}},{"before":null,"after":"ea44edb2cad941ddb82346302bf63bdc0c6f7a70","ref":"refs/heads/branch-4.9","pushedAt":"2023-09-18T12:39:10.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"},"commit":{"message":"Do not encode username and password in Proxy-Authorization header","shortMessageHtmlLink":"Do not encode username and password in Proxy-Authorization header"}},{"before":"561993aa98cb6d7049e7c9c2b4181c41727f611d","after":null,"ref":"refs/heads/mmt/ws","pushedAt":"2023-08-11T09:16:16.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"}},{"before":"766348f8e60579061c2de7476f3b95e04bb9791e","after":"1aab6935a07cb1588ce8b74312f3475bfe2f0ffa","ref":"refs/heads/master","pushedAt":"2023-08-11T09:16:15.000Z","pushType":"pr_merge","commitsCount":6,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"},"commit":{"message":"Move copySync and friends below the tunnel function","shortMessageHtmlLink":"Move copySync and friends below the tunnel function"}},{"before":"dcf8e116ef0f4005c4affaa28be4a1c471e2f87e","after":"561993aa98cb6d7049e7c9c2b4181c41727f611d","ref":"refs/heads/mmt/ws","pushedAt":"2023-08-11T09:15:36.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"},"commit":{"message":"Move copySync and friends below the tunnel function","shortMessageHtmlLink":"Move copySync and friends below the tunnel function"}},{"before":null,"after":"dcf8e116ef0f4005c4affaa28be4a1c471e2f87e","ref":"refs/heads/mmt/ws","pushedAt":"2023-08-10T09:26:56.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"},"commit":{"message":"Refactor tunneling code to tunnel functions\n\nThe purpose of this change is removing duplicated code and improving readability.\n\nBoth Proxy and proxyHandler add a tunnel function that is responsible for orchestrating copySync calls.\nThis allows to highlight both similarities between the two implementations and differences between handling CONNECT requests and Switching Protocols response.\n\nIn addition to that in proxyHandler the error propagation is fixed.\nWe only returned nil error.\nThe error handling in ServeHTTP has very limited use because it needs to be done prior to writing anything to the connection and hijacking.","shortMessageHtmlLink":"Refactor tunneling code to tunnel functions"}},{"before":"926b957d85f3ca297e1cf62f0942074d180c5bf3","after":null,"ref":"refs/heads/mmt/error_handling_improvements","pushedAt":"2023-08-03T12:07:38.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"}},{"before":"559e69fff37bf3251187c691978e41be87e8ba23","after":"766348f8e60579061c2de7476f3b95e04bb9791e","ref":"refs/heads/master","pushedAt":"2023-08-03T12:07:37.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"},"commit":{"message":"Consider all tls errors closable","shortMessageHtmlLink":"Consider all tls errors closable"}},{"before":null,"after":"926b957d85f3ca297e1cf62f0942074d180c5bf3","ref":"refs/heads/mmt/error_handling_improvements","pushedAt":"2023-08-03T11:03:31.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"},"commit":{"message":"Consider all tls errors closable","shortMessageHtmlLink":"Consider all tls errors closable"}},{"before":"be0dad2e21d2cc850639dc105d42c81d5cd94631","after":null,"ref":"refs/heads/mmt/fix_connect_response","pushedAt":"2023-06-29T12:05:55.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"}},{"before":"bdee6b0b3fccb9b01b773199eac575201199de62","after":"559e69fff37bf3251187c691978e41be87e8ba23","ref":"refs/heads/master","pushedAt":"2023-06-29T12:05:54.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"},"commit":{"message":"dialvia: support context cancellation in ReadResponse","shortMessageHtmlLink":"dialvia: support context cancellation in ReadResponse"}},{"before":null,"after":"be0dad2e21d2cc850639dc105d42c81d5cd94631","ref":"refs/heads/mmt/fix_connect_response","pushedAt":"2023-06-29T11:50:17.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"},"commit":{"message":"dialvia: support context cancellation in ReadResponse","shortMessageHtmlLink":"dialvia: support context cancellation in ReadResponse"}},{"before":"27a9ab12b4dd40fa4f7769756fefd6ef98d10747","after":null,"ref":"refs/heads/mmt/handler_v2","pushedAt":"2023-06-29T10:21:03.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"}},{"before":"71f78fd72b69dc6a05a41ca0da504f203b782c41","after":null,"ref":"refs/heads/mmt/dialvia_http_ergonomics","pushedAt":"2023-06-29T10:21:00.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"}},{"before":"89eeff778530607222dbd9d29f51d55cfc9bd807","after":null,"ref":"refs/heads/mmt/dialvia_and_dial_context","pushedAt":"2023-06-29T10:20:59.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"}},{"before":"f0d64db3d05b365f1151ece269761e1b7ca56667","after":null,"ref":"refs/heads/mmt/no_client","pushedAt":"2023-06-29T10:20:57.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"}},{"before":"5aee97e176d304fa744f35a80683c7b6b9dd20ff","after":null,"ref":"refs/heads/mmt/copy_buffer","pushedAt":"2023-06-29T10:20:56.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"}},{"before":"bb3c8b0ff1d9886d9306b0d433a9a753d9205381","after":null,"ref":"refs/heads/mmt/proxy_improvements","pushedAt":"2023-06-29T10:20:54.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"}},{"before":"6a7ce352c5d26c088de16ab060f173490bab1279","after":null,"ref":"refs/heads/mmt/connect_pt_fix","pushedAt":"2023-06-29T10:20:49.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"}},{"before":"cbb9b3f0498c228d32aff73ecc32fabf0dd7bbf6","after":"bdee6b0b3fccb9b01b773199eac575201199de62","ref":"refs/heads/master","pushedAt":"2023-06-29T10:09:57.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"},"commit":{"message":"dialvia: add standard DialContext implementation\n\nThis adds DialContext implementation that handles the response and can be used as a standard DialContext function.","shortMessageHtmlLink":"dialvia: add standard DialContext implementation"}},{"before":null,"after":"71f78fd72b69dc6a05a41ca0da504f203b782c41","ref":"refs/heads/mmt/dialvia_http_ergonomics","pushedAt":"2023-06-29T09:42:51.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"},"commit":{"message":"dialvia: add standard DialContext implementation\n\nThis adds DialContext implementation that handles the response and can be used as a standard DialContext function.","shortMessageHtmlLink":"dialvia: add standard DialContext implementation"}},{"before":"8613784688815b2a12e0106a18c774dfd4900ccd","after":"cbb9b3f0498c228d32aff73ecc32fabf0dd7bbf6","ref":"refs/heads/master","pushedAt":"2023-06-28T14:22:11.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"},"commit":{"message":"Fix typo","shortMessageHtmlLink":"Fix typo"}},{"before":"abba69dba6a09721a6196c320e6b7c289ae03553","after":"89eeff778530607222dbd9d29f51d55cfc9bd807","ref":"refs/heads/mmt/dialvia_and_dial_context","pushedAt":"2023-06-28T14:18:16.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mmatczuk","name":"Michal Matczuk","path":"/mmatczuk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1617930?s=80&v=4"},"commit":{"message":"Fix typo","shortMessageHtmlLink":"Fix typo"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAADmg78cgA","startCursor":null,"endCursor":null}},"title":"Activity ยท saucelabs/martian"}