Bug 49694 - Игнорировать reason-phrase по http
Summary: Игнорировать reason-phrase по http
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: apt (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-03-14 12:34 MSK by Andrey Cherepanov
Modified: 2024-03-15 19:21 MSK (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andrey Cherepanov 2024-03-14 12:34:51 MSK
При настройке репозиториев на артифактори есть проблема с их подключением в Альте, а именно при выполнении команды:
sudo apt-get update
получаем ошибку:

E: Failed to fetch http://artifactory-ng.infowatch.ru:8081/artifactory/rpm-altlinux-p10-push_stream-test-local/x86_64/base/release  The http server sent an invalid reply header
E: Some index files failed to download. They have been ignored, or old ones used instead.

Проблема заключается в том, что артифактори отдаёт
< HTTP/1.1 200
а apt-get ждёт
< HTTP/1.1 200 OK
Проблема именно в 'OK'(точнее в сообщении которого нет), вот код который это проверяет
https://git.altlinux.org/gears/a/apt.git?p=apt.git;a=blob;f=methods/http.cc;h=e285f167fb7fd8976853fb2a233ce412bbb3ddce;hb=39b08d81d1d8aef81e68a288fdcea9951808183c#l537
Может не учитывать Code, зачем он при определении версии HTTP?

клиент ДОЛЖЕН игнорировать reason-phrase
https://www.rfc-editor.org/rfc/rfc7230#section-3.1.2

The reason-phrase element exists for the sole purpose of providing a
textual description associated with the numeric status code, mostly
out of deference to earlier Internet application protocols that were
more frequently used with interactive text clients. A client SHOULD
ignore the reason-phrase content.
Comment 1 Gleb F-Malinovskiy 2024-03-15 14:33:28 MSK
Чуть выше в этом же стандарте написано вот так:

The first line of a response message is the status-line, consisting
of the protocol version, a space (SP), the status code, another
space, a possibly empty textual phrase describing the status code,
and ending with CRLF.

Это значит пробел не опциональный, а опциональна только фраза после него.  Получается, apt соблюдает стандарт, а сервер *не* соблюдает.

Мне кажется, что вот такой способ и описание более правильные:
https://salsa.debian.org/apt-team/apt/-/commit/de2b1358926d293c85277e1d9a58ac94915470ec
Comment 2 Repository Robot 2024-03-15 19:21:26 MSK
apt-0.5.15lorg2-alt87 -> sisyphus:

 Fri Mar 15 2024 Andrey Cherepanov <cas@altlinux> 0.5.15lorg2-alt87
 - Ignore check reason-phrase element in HTTP header (ALT #49694).