Bug #77497 [Opn]: Empty reponse with H2 server push and timeout

From: Date: Mon, 21 Jan 2019 19:57:47 +0000
Subject: Bug #77497 [Opn]: Empty reponse with H2 server push and timeout
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-219113@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=77497&edit=1 ID: 77497 User updated by: tobias dot nyholm at gmail dot com Reported by: tobias dot nyholm at gmail dot com -Summary: Segfault with H2 server push and timeout +Summary: Empty reponse with H2 server push and timeout Status: Open Type: Bug Package: cURL related Operating System: Alpine PHP Version: 7.3Git-2019-01-21 (Git) Block user comment: N Private report: N New Comment: Correction: No segfault, just empty responses. Previous Comments: ------------------------------------------------------------------------ [2019-01-21 18:16:29] tobias dot nyholm at gmail dot com Description: ------------ Follow up from https://bugs.php.net/bug.php?id=76675 When I use cUrl h2 push functionality and timeouts I get a crash. Test script: --------------- <?php $transfers = 1; $callback = function($parent, $passed) use (&$transfers) { curl_setopt($passed, CURLOPT_WRITEFUNCTION, function ($ch, $data) { echo "Received ".strlen($data)."\n"; return strlen($data); }); $transfers++; return CURL_PUSH_OK; }; $mh = curl_multi_init(); curl_multi_setopt($mh, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX); curl_multi_setopt($mh, CURLMOPT_PUSHFUNCTION, $callback); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://http2.golang.org/serverpush'); curl_setopt($ch, CURLOPT_HTTP_VERSION, 3); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // FIXME, this line crashes everything. Without it, everything is fine. curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_multi_add_handle($mh, $ch); $active = null; do { $status = curl_multi_exec($mh, $active); do { $info = curl_multi_info_read($mh); if (false !== $info && $info['msg'] == CURLMSG_DONE) { $handle = $info['handle']; if ($handle !== null) { $transfers--; curl_multi_remove_handle($mh, $handle); curl_close($handle); } } } while ($info); } while ($transfers); curl_multi_close($mh); ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=77497&edit=1

« previous php.bugs (#219113) next »