php_embed_ub_write does not return on error
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 78/100
Direzione di ricerca
Inizia in sapi/embed/php_embed.c, in php_embed_ub_write, e segui il percorso di errore di php_embed_single_write, seguito da php_handle_aborted_connection. Verifica che una scrittura di zero byte non possa ripetersi indefinitamente quando la connessione non è stata interrotta. Il lavoro è completato quando la funzione restituisce il numero di byte scritti dopo l'errore invece di entrare in un ciclo infinito.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
sapi/embed/php_embed.c:
/* SAPIs only have unbuffered write operations. This is because PHP's output
* buffering feature will handle any buffering of the output and invoke the
* SAPI unbuffered write operation when it flushes the buffer.
*/
static size_t php_embed_ub_write(const char *str, size_t str_length)
{
const char *ptr = str;
size_t remaining = str_length;
size_t ret;
while (remaining > 0) {
ret = php_embed_single_write(ptr, remaining);
if (!ret) {
php_handle_aborted_connection();
}
ptr += ret;
remaining -= ret;
}
return str_length;
}
php_handle_aborted_connection does not always abort, i.e. if ignore_user_abort=1. So I sending fails and ret is 0, then remaining is never decremented and this loops forever.
It should probably return str_length - remaining after php_handle_aborted_connection().
PHP Version
master
Operating System
No response
- Lingua principale
- C
- Stelle
- 40.4k
- Fork
- 8.2k
- Merge medio
- 2g 17h
- PR unite (30g)
- 115
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di php/php-src
-
Bug Status: Needs Triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
-
Bug Status: Needs Triage
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
-
Flaky hrtime.phpt test ApertaBug Category: Tests Status: Verified
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Bug SAPI: fpm Status: Needs Triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
Bug Extension: openssl Status: Needs Triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
duckdb/duckdb-wasm#2258 ·
-
how does install.sh work Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
rofl0r/microsocks#110 ·
-
OTA is not aborted correctly Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
espressif/esp-aws-iot#261 ·
-
os:linux
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
mpv-player/mpv#18510 · 2 commenti ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100