Board.KolibriOS.org

Official KolibriOS board
It is currently Sat Dec 07, 2019 5:46 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 91 posts ]  Go to page 1 2 3 4 57 Next
Author Message
 Post subject: http качалка
PostPosted: Sat Jan 31, 2009 11:45 pm 
Offline

Joined: Wed Jun 04, 2008 10:16 pm
Posts: 174
Quote:
Тебе только GET нужен, даже частичные запросы и кеширование не нужны, так что меняеш GET * HTTP/1.0 на GET * HTTP/1.1 и будет тебе счастье.

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


Attachments:
wget.7z [9.01 KiB]
Downloaded 255 times
Top
   
 Post subject: Re: http качалка
PostPosted: Sat Jan 31, 2009 11:51 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1601
Quote:
виснет намертво вся система, включая qemu (похоже на баг сетевого стека, т.к. httpc тоже виснет).

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

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


Top
   
 Post subject: Re: http качалка
PostPosted: Sun Feb 01, 2009 2:34 pm 
Offline
Kernel Developer
User avatar

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

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


Top
   
 Post subject: Re: http качалка
PostPosted: Mon Feb 02, 2009 2:30 pm 
Offline
Kernel Developer
User avatar

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


Attachments:
File comment: вывод приложения
board2k.png
board2k.png [ 3.95 KiB | Viewed 7722 times ]
File comment: вывод ядра
board1k.png
board1k.png [ 5.25 KiB | Viewed 7727 times ]
Top
   
 Post subject: Re: http качалка
PostPosted: Mon Feb 02, 2009 4:03 pm 
Offline

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


Attachments:
wget.7z [9.2 KiB]
Downloaded 208 times
Top
   
 Post subject: Re: http качалка
PostPosted: Mon Feb 02, 2009 4:07 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
ура ура ура))

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

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


Top
   
 Post subject: Re: http качалка
PostPosted: Mon Feb 02, 2009 4:44 pm 
Offline

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


Top
   
 Post subject: Re: http качалка
PostPosted: Mon Feb 02, 2009 5:12 pm 
Offline
Kernel Developer
User avatar

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


Top
   
 Post subject: Re: http качалка
PostPosted: Mon Feb 02, 2009 5:15 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1601
barsuk wrote:
diamond, а если происходит переполнение, а приложение, заказавшее данные, прибить, то буфер остается заполненным навечно и с сетью до перезагрузки работать невозможно?

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

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


Top
   
 Post subject: Re: http качалка
PostPosted: Mon Feb 02, 2009 6:02 pm 
Offline

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

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

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


Top
   
 Post subject: Re: http качалка
PostPosted: Wed Feb 04, 2009 8:54 pm 
Offline

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


Attachments:
downloader-0.8.7z [10.62 KiB]
Downloaded 223 times
Top
   
 Post subject: Re: http качалка
PostPosted: Sat Feb 07, 2009 7:18 pm 
Offline
Kernel Developer
User avatar

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


Attachments:
downbug.png
downbug.png [ 5.17 KiB | Viewed 7507 times ]

_________________
Ушёл к умным, знающим и культурным людям.
Top
   
 Post subject: Re: http качалка
PostPosted: Sat Feb 07, 2009 10:33 pm 
Offline

Joined: Wed Jun 04, 2008 10:16 pm
Posts: 174
А оно падает при запуске из командной строки или через gui?


Top
   
 Post subject: Re: http качалка
PostPosted: Sat Feb 07, 2009 10:37 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1601
И через командную строку, и через GUI.


Top
   
 Post subject: Re: http качалка
PostPosted: Thu Feb 12, 2009 5:45 pm 
Offline

Joined: Wed Jun 04, 2008 10:16 pm
Posts: 174
Падение исправил.
Подумал, что кидать результат в /rd/1/a нехорошо. Теперь он попадает в /rd/1/.download.

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


Attachments:
downloader-0.82.7z [11.82 KiB]
Downloaded 257 times
Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 91 posts ]  Go to page 1 2 3 4 57 Next

All times are UTC+03:00


Who is online

Users browsing this forum: Google [Bot] and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited