benoitc / benoitc/http-parser

Error method parsed when more data append request buffer

Offen
#70 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
bug to investigate
Vorherrschende Sprache
C
Sterne
345
Forks
94
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

I made a demo
```
try:
from http_parser.parser import HttpParser
except ImportError:
from http_parser.pyparser import HttpParser

req = "GET / HTTP/1.1\r\nHost: www.xxx.com\r\n\r\n"
resp = "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\n1234"

data = req
p = HttpParser()
nparsed = p.execute(data, len(data))
print p.get_method(), nparsed, len(data)
# Got: GET 37 37

data = req + resp
p = HttpParser()
nparsed = p.execute(data, len(data))
print p.get_method(), nparsed, len(data)
# Got: HEAD 38 79
# pyparser Got: GET 79 79

# expected: GET 37 79
```

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginnen Sie damit, die bereitgestellte Demo über die C-gestützten HttpParser-Einstiegspunkte auszuführen, insbesondere execute und get_method, und vergleichen Sie sie mit pyparser. Verfolgen Sie, warum das Anhängen der Antwort die geparste Methode ändert; fertig ist die Aufgabe, wenn die C-Implementierung GET meldet, 37 Request-Bytes parst und die kombinierte Länge bei 79 belässt, wie im erwarteten Ergebnis gezeigt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
c, python
Bereich
api, backend
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.