Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Сб июл 22, 2017 7:48 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 88 сообщений ]  На страницу 1 2 3 4 5 6 След.
Автор Сообщение
 Заголовок сообщения: http качалка
СообщениеДобавлено: Сб янв 31, 2009 11:45 pm 
Не в сети

Зарегистрирован: Ср июн 04, 2008 10:16 pm
Сообщения: 174
Цитата:
Тебе только GET нужен, даже частичные запросы и кеширование не нужны, так что меняеш GET * HTTP/1.0 на GET * HTTP/1.1 и будет тебе счастье.

Все же пришлось добавить заголовки Host и Connection-type. Кое-что стало лучше. Загружается, например, страница menuetos.net.
Но почему-то при попытке скачать www.yandex.ru виснет намертво вся система, включая qemu (похоже на баг сетевого стека, т.к. httpc тоже виснет).


Вложения:
wget.7z [9.01 КБ]
162 скачивания
Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Сб янв 31, 2009 11:51 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
Цитата:
виснет намертво вся система, включая qemu (похоже на баг сетевого стека, т.к. httpc тоже виснет).

Ага, это действительно баг сетевого стека, мне уже сообщили. Под VirtualBox тоже виснет вся система. Скриншоты снял (очень похоже на то, что где-то то ли стек не восстанавливается, то ли его содержимое перезаписывается чем-то), весь трафик сдампил, буду разбираться...

_________________
Ушёл к умным, знающим и культурным людям.


Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Вс фев 01, 2009 2:34 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
В общем, сервер www.yandex.ru слишком быстрый для httpc :) Побайтовое чтение из сокета - вещь на редкость тормозная (особенно в текущей реализации), так что функция 53.3 крайне не рекомендуется, а вместо неё следует использовать 53.11. Конкретно httpc просто не успевал считывать все данные, а поступали всё новые и новые, что быстро приводило к переполнению буфера для данных сокета со всеми вытекающими последствиями. В svn.1019 добавил проверку на переполнение, переполняющие пакеты тупо отбрасываются в надежде на tcp-перепосылку, система больше не виснет, но необходимости перехода на 53.11 это не отменяет.

_________________
Ушёл к умным, знающим и культурным людям.


Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Пн фев 02, 2009 2:30 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
С новым ядром httpc успешно открывает http://www.yandex.ru, но wget просто падает. Снимки доски отладки прилагаю.


Вложения:
Комментарий к файлу: вывод приложения
board2k.png
board2k.png [ 3.95 КБ | 5040 просмотров ]
Комментарий к файлу: вывод ядра
board1k.png
board1k.png [ 5.25 КБ | 5045 просмотров ]
Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Пн фев 02, 2009 4:03 pm 
Не в сети

Зарегистрирован: Ср июн 04, 2008 10:16 pm
Сообщения: 174
diamond
Перевел wget на 53.11 (чтение из сокета группы байт вместо побайтового чтения) и убрал задержку при чтении. Теперь yandex.ru открывается и скачивается (даже похож на правильный, если смотреть на код). Сейчас буду писать поддержку командной строки.


Вложения:
wget.7z [9.2 КБ]
125 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Пн фев 02, 2009 4:07 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн апр 16, 2007 6:38 pm
Сообщения: 1222
ура ура ура))

извините за флуд)

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Пн фев 02, 2009 4:44 pm 
Не в сети

Зарегистрирован: Ср июн 04, 2008 10:16 pm
Сообщения: 174
diamond, а если происходит переполнение, а приложение, заказавшее данные, прибить, то буфер остается заполненным навечно и с сетью до перезагрузки работать невозможно?


Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Пн фев 02, 2009 5:12 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
Так, www.yandex.ru уже грузится.
Следующий тест: www.wasm.ru не грузится. На доску отладки выводится "1FF0 content-length not found" и программа аварийно завершается.
Кстати, функции 53.11 нужно всё-таки передавать значение в esi - размер буфера, а то сейчас esi вообще не инициализируется, иногда это приводит к вылету программы из-за кода ядра.


Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Пн фев 02, 2009 5:15 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
barsuk писал(а):
diamond, а если происходит переполнение, а приложение, заказавшее данные, прибить, то буфер остается заполненным навечно и с сетью до перезагрузки работать невозможно?

Переполнение вообще влияет только на один сокет, и кривая работа с одним сокетом не влияет на остальные сокеты.

_________________
Ушёл к умным, знающим и культурным людям.


Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Пн фев 02, 2009 6:02 pm 
Не в сети

Зарегистрирован: Ср июн 04, 2008 10:16 pm
Сообщения: 174
Цитата:
Кстати, функции 53.11 нужно всё-таки передавать значение в esi - размер буфера, а то сейчас esi вообще не инициализируется, иногда это приводит к вылету программы из-за кода ядра.

Спасибо, забыл написать.

На wasm.ru используется Chunked transfer encoding, и заголовка Content-Length, на который я раньше ориентировался для определения размера буфера, нет. Буду разбираться.


Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Ср фев 04, 2009 8:54 pm 
Не в сети

Зарегистрирован: Ср июн 04, 2008 10:16 pm
Сообщения: 174
Готова версия, которая способна скачать: 1) www.yandex.ru, 2) www.wasm.ru.
Поменял название на downloader, т.к. это все же не wget :)
Запускается также из командной строки, после завершения загрузки закрывается.


Вложения:
downloader-0.8.7z [10.62 КБ]
141 скачивание
Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Сб фев 07, 2009 7:18 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
Протестировал. Падает, причём на всём подряд. На рамдиск сбрасывается файл A, но он явно обрывается посередине.


Вложения:
downbug.png
downbug.png [ 5.17 КБ | 4825 просмотров ]

_________________
Ушёл к умным, знающим и культурным людям.
Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Сб фев 07, 2009 10:33 pm 
Не в сети

Зарегистрирован: Ср июн 04, 2008 10:16 pm
Сообщения: 174
А оно падает при запуске из командной строки или через gui?


Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Сб фев 07, 2009 10:37 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
И через командную строку, и через GUI.


Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Чт фев 12, 2009 5:45 pm 
Не в сети

Зарегистрирован: Ср июн 04, 2008 10:16 pm
Сообщения: 174
Падение исправил.
Подумал, что кидать результат в /rd/1/a нехорошо. Теперь он попадает в /rd/1/.download.

Добавил маленькую либу и пример работы с ней. Сейчас либа вызывает downloader с указанным параметром, но в будущем, возможно, я перенесу всю работу по скачиванию файла в нее. То есть в сторонних приложения рекомендуется юзать именно либу.


Вложения:
downloader-0.82.7z [11.82 КБ]
152 скачивания
Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 88 сообщений ]  На страницу 1 2 3 4 5 6 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB