Russian Qt Forum

Qt => Работа с сетью => Тема начата: sergmann от Июль 03, 2008, 12:41



Название: [4.3.1 - 4.4.0] Пример QT Http падает при использовании https
Отправлено: sergmann от Июль 03, 2008, 12:41
Здравствуйте! Помогите, пожалуйста, разобраться с проблемой ... безрезультатно уже бьюсь второй день.
Суть: берём пример из Qt "http", вводим в строке ввода, например: "https://user:password@www.server.ru:443/index". При этом, если имя_пользователя и пароль верны, то всё в порядке, и всё успешно работает, но если они неверны, то выдаётся диалог с запросом имени и пароля, и если в диалоге нажать "Отмена", то программа падает на QT 4.4.0 и уходит в бесконечный цикл на QT 4.3.1. Я напаролся на эту ошибку, когда писал своего https клиента. Не могу найти решения для выхода из сложившейся ситуации, как мне успешно обработать ситуацию с некорректными данными аутентификации.
Если кто-нибудь в курсе дела, помогите, пожалуйста.


Название: Re: [4.3.1 - 4.4.0] Пример QT Http падает при использовании https
Отправлено: ритт от Июль 03, 2008, 12:56
4.4.0; mingw - пример не падает и не циклится
для чистоты эксперимента приведи конкретный адрес с неправильными логином и паролем, для которого у тебя происходит краш


Название: Re: [4.3.1 - 4.4.0] Пример QT Http падает при использовании https
Отправлено: sergmann от Июль 03, 2008, 13:20
Я только сейчас заметил, что падает только если сразу нажать "Отмена" после появления диалога, а если немного подождать то не падает, т.е. если закомментить вызов диалога, то должно падать:


Код:
void HttpWindow::slotAuthenticationRequired(const QString &hostName, quint16, QAuthenticator *authenticator)
{
/*
    QDialog dlg;
    Ui::Dialog ui;
    ui.setupUi(&dlg);
    dlg.adjustSize();
    ui.siteDescription->setText(tr("%1 at %2").arg(authenticator->realm()).arg(hostName));
   
    if (dlg.exec() == QDialog::Accepted) {
        authenticator->setUser(ui.userEdit->text());
        authenticator->setPassword(ui.passwordEdit->text());
    }
*/
}


Вот, например, адрес: https://aaa:aaa@user.infoline.su:443/stat/cust_inf для проверки.
Хотя у меня сборка в MSVC.


Название: Re: [4.3.1 - 4.4.0] Пример QT Http падает при использовании https
Отправлено: ритт от Июль 03, 2008, 13:50
действительно крашит (openSSL 0.9.8g - более свежей версии под рукой нет).
однако, дело вовсе не в аутентификаторе (тем более, что в 4.3.1 уходит в вечность)
ни разу не падает, если закомментировать строку 261 (qt-all-opensource-4.4.0):
Код:
        http->ignoreSslErrors();

отрапортуй троллям. обязательно укажи https://aaa:aaa@user.infoline.su:443/stat/cust_inf для проверки.


Название: Re: [4.3.1 - 4.4.0] Пример QT Http падает при использовании https
Отправлено: sergmann от Июль 03, 2008, 14:24
Троллям отрапортовал ... вопрос в том, как бы обойти эту проблему (проект горит)? Я не могу убрать http->ignoreSslErrors(), мне этот вызов необходим.


Название: Re: [4.3.1 - 4.4.0] Пример QT Http падает при использовании https
Отправлено: sergmann от Август 09, 2008, 21:17
Прикольно, в QT 4.4.1 эту ошибку уже исправили.


Название: Re: [4.3.1 - 4.4.0] Пример QT Http падает при использовании https
Отправлено: ритт от Август 09, 2008, 21:55
вот и хорошо. правда, не могу сходу найти упоминание об этом исправлении в ченджлоге...

будем считать ветку закрытой, но пусть остаётся на будущее


Название: Re: [4.3.1 - 4.4.0] Пример QT Http падает при использовании https
Отправлено: sergmann от Август 10, 2008, 00:05
В логе этой баги, кажись, нет. Просто я проверил, сэмпл из новой версии теперь не падает. Видимо, другие исправления устранили эту ошибку.


Название: Re: [4.3.1 - 4.4.0] Пример QT Http падает при использовании https
Отправлено: ритт от Август 10, 2008, 00:41
ну, посмотри тогда состояние таски, которую ты отрапортовал - если не закрыта, напиши им, что само пофиксилось :P