benoitc / benoitc/http-parser

Error method parsed when more data append request buffer

オープン
#70 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る
bug to investigate
主要言語
C
スター
345
フォーク
94
PR マージ指標
30日以内にマージされた PR はありません

説明

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
```

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

調査の方向性

まず、提供されたデモを C ベースの HttpParser エントリーポイント、特に execute と get_method を通して実行し、pyparser と比較します。レスポンスを追加すると解析されたメソッドが変わる理由を追跡します。期待される結果に示されているとおり、C 実装が GET を報告し、37 個のリクエストバイトを解析し、結合後の長さを 79 のままにすれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
c, python
領域
api, backend
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
42/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。