Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Curl таймаут 
:(
    Опции темы
chubaka
Дата 5.8.2009, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 8.6.2007

Репутация: нет
Всего: нет



Загружаю страницу посредством cURL через SOCKS4 прокси.
Функция выглядит так:

Код
bool http_get_via_proxy(const char *ip, int port)
{
    CURL *curl;
    CURLcode result;    
    std::string buffer;

    curl = curl_easy_init();
    if (curl)
    {
        curl_easy_setopt(curl, CURLOPT_URL, "http://www.bing.com/");
        curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10);
        curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10);        
        curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, true);
        curl_easy_setopt(curl, CURLOPT_HEADER, true);
        curl_easy_setopt(curl, CURLOPT_PROXY, ip);
        curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
        curl_easy_setopt(curl, CURLOPT_PROXYPORT, port);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
                                                          
        result = curl_easy_perform(curl); // на этом месте иногда программа зависает и уже не отвечает
        if (result == CURLE_OK)
        {
            curl_easy_cleanup(curl);
            return true;
        }
        else
        {
            curl_easy_cleanup(curl);
            return false;
        }
    }

    return false;
}


Почему в некоторых случаях вызов curl_easy_perform блокирует работу программы ? Таймауты установлены, программа работает нормально несколько часов и потом зависает. После мучительного дебага было установлено что блокирует именно функция curl_easy_perform.

Помогите пожалуйста!
PM MAIL   Вверх
JackYF
Дата 6.8.2009, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 3
Всего: 162



chubaka, а вруби дебаг-опции Curl'a, авось, что-то прояснится.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
chubaka
Дата 6.8.2009, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 8.6.2007

Репутация: нет
Всего: нет



А не подскажите как работает эта опция ? Или пример ? 
Просто если программа зависла то и результат дебага никуда не запишу.. Или она самостоятельно может кудато в файл?
PM MAIL   Вверх
MAKCim
Дата 6.8.2009, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(chubaka @  6.8.2009,  19:36 Найти цитируемый пост)
А не подскажите как работает эта опция ? Или пример ? 

CURLOPT_DEBUGFUNCTION
CURLOPT_VERBOSE

а лучше когда повиснет через gdb глянь, на чем висит
подозреваю хреновый прокси


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
chubaka
Дата 7.8.2009, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 8.6.2007

Репутация: нет
Всего: нет



Я тоже склоняюсь к тому что чтото не так с прокси, но программа ведь не должна виснуть.

Спасибо инфу, буду пробовать.

Это сообщение отредактировал(а) chubaka - 7.8.2009, 22:48
PM MAIL   Вверх
MAKCim
Дата 9.8.2009, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(chubaka @  7.8.2009,  22:47 Найти цитируемый пост)
но программа ведь не должна виснуть.

почему? она вполне может повиснуть на connect/recv


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0864 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.