@ProCxx

Страница 2171 из 2477
Zhanat
02.07.2018
09:55:03
Здравствуйте. В Андроид приложении на Си использую openssl для соединения с сервером посредством сокетов. После смены precompiled библиотеки openssl столкнулся с ошибкой: SSL routines:ssl3_get_client_hello:no shared cipher:s3_srvr Перепробовал разные методы sslv3 tlsv1 tlsv1_2, результат негативный. Как исправить эту ошибку?

Zhanat
02.07.2018
09:59:25
попробовать другую версию openssl?
К сожалению есть ограничение. Андроид по умолчанию не имеет openssl, поэтому его нужно отдельно собрать и слепить precompiled. Уйму времени потратил позитивного результата не добился, поэтому использовал готовый вариант из этого репозитория https://github.com/leenjewel/openssl_for_ios_and_android

Google
Bogdan
02.07.2018
10:00:21
а вообще, ошибка гуглится https://github.com/openssl/openssl/issues/2572

Zhanat
02.07.2018
10:02:08
а вообще, ошибка гуглится https://github.com/openssl/openssl/issues/2572
Да Гуглом пользоваться умею. Эту ссылку видел. Но как я уже говорил нативная либа используется в Android , и с командной строки эти замечательные команды вызвать не удастся

Bogdan
02.07.2018
10:05:39
отчего нет? через adb shell не получится разве?

Zhanat
02.07.2018
10:07:50
отчего нет? через adb shell не получится разве?
Нет. Говорю же в системе не предустановлен openssl, его можно только паравозом притащить через статический include. И если нормально соберётся то он будет в составе готовой .so либы приложения

Ilia
02.07.2018
10:08:29
Да Гуглом пользоваться умею. Эту ссылку видел. Но как я уже говорил нативная либа используется в Android , и с командной строки эти замечательные команды вызвать не удастся
При чём тут коммандная строка-то? Там прос то демонстрируют с помощью неё, КАК надо обходить, задать явно этот chypher. Ты, очевидно, должен сделать это программно.

Sergey
02.07.2018
10:17:49
класс памяти register устарел?

Дед Пегас
02.07.2018
10:20:15
Да.

Теперь такие оптимизации компилятор производст самостоятельно и автоматически по нужде.

Zhanat
02.07.2018
10:25:58
Версия openssl не поднималась случаем? Там поломался api.
OpenSSL 1.1.0c 10 Nov 2016 client OpenSSL 1.0.2k-fips 26 Jan 2017 server

Max
02.07.2018
10:27:32
Да. Между ними и поломалось.

Google
Max
02.07.2018
10:28:00
Копай changelog, смотри, что нужно поменять.

или собери 1.0.2, для проверки.

Zhanat
02.07.2018
10:43:56
или собери 1.0.2, для проверки.
сейчас сервер пересобираю. поставлю 1.1.0с

Fuzzytoozy
02.07.2018
11:09:28
Ребят, подскажите. Безопасно ли определять move constructor + assignment как default у потомка с инкапсулированным unique_ptr если у родителя тоже есть инкапсулированный unique_ptr? И безопасно ли операторы указанные выше у потомка определять как default если у родителя эти операторы не дефолтные

Fuzzytoozy
02.07.2018
11:14:37
По моему ни в чем. Но вдруг есть подводные камни о существовании которых я не подозреваю

Constantine
02.07.2018
11:16:31
Операция опасна, если объект нетривиально взаимодействует с собой

Присваивание через swap with copy не страдает этой проблемой

struct Node { std::vector<Node> children; } root; void push_up(){ if (root.children.empty()) return; root = root.children[0]; //UB }

Igor
02.07.2018
11:25:07
https://godbolt.org/g/gxqbEa я правильно понимаю что это мракобесие происходит из-за того, что препроцессор резолвит незнакомые ему имена макросов в 0 и получает #if 0 == 0?

Fuzzytoozy
02.07.2018
11:25:22
Понятно. Спасибо!

Antony
02.07.2018
11:26:50
@antoshkka https://godbolt.org/g/6VHoYp кто не прав?
http://eel.is/c++draft/basic.lval#5 "The result object of a prvalue is the object initialized by the prvalue; a prvalue that is used to compute the value of an operand of an operator or that has type (possibly cv-qualified) void has no result object." Кажется что clang прав Сейчас тикеты на GCC заведу

Antony
02.07.2018
11:41:11
@antoshkka https://godbolt.org/g/6VHoYp кто не прав?
Завёл тикет: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86373

@antoshkka https://godbolt.org/g/6VHoYp кто не прав?
На то что clang компилирует этот код и в C++11, и в C++14 тикеты заводить не стал :) ИМХО это скорее фича которая ускоряет время компиляции, а не баг :)

Alexey
02.07.2018
11:46:56
хм. а это норма, что hello world для boost::msm собирается дольше 10 секунд? При том, что в доке сказано "The simple test completes 90 times faster with MSM than with Boost.Statechart". Это ж сколько Boost.Statechart компилируется тогда?

Alexey
02.07.2018
11:53:40
completes, а не compiles
упс. тогда сори.

Google
Alexey
02.07.2018
11:54:03
просто msm компилится настолько медленно, что godbolt убивает компилятор не дождавшись.

Zhanat
02.07.2018
11:57:09
или собери 1.0.2, для проверки.
Собрал одинаковые сборки для сервера и клиента на одной машине. Получаю ошибку tls_post_process_client_hello:no shared cipher:ssl/statem/statem_srvr

Max
02.07.2018
12:01:03
Собрал одинаковые сборки для сервера и клиента на одной машине. Получаю ошибку tls_post_process_client_hello:no shared cipher:ssl/statem/statem_srvr
Причём здесь клиент и сервер? Нужно собрать с той версией openssl, под которую написан код. Либо поправить код под новую версию.

Zhanat
02.07.2018
12:03:03
Max
02.07.2018
12:08:37
Чтобы тестировать, а не каждый раз компилить нативную либу и пересобирать АПК
Причём здесь это? Речь о том, что нужна та версия либы, под которую написан код. Что там на ответной части -- значения не имеет.

Чтобы тестировать, а не каждый раз компилить нативную либу и пересобирать АПК
1.0.2 и 1.1.0 имеют большие breaking changes, которые, к сожалению, ломаются не всегда в компил-тайме. По ссылке, которую я привёл, есть список самых основных изменений, можно идти прямо по пунктам.

Zhanat
02.07.2018
12:11:11
Причём здесь это? Речь о том, что нужна та версия либы, под которую написан код. Что там на ответной части -- значения не имеет.
При том. Той версии либы нет, она устарела так как не поддерживает arm64-v8a. Поэтому сейчас тестирую на сервере с одинаковой версией openssl, и получаю ошибки которые я постил выше.

Anatoly
02.07.2018
12:15:54
https://godbolt.org/g/gxqbEa я правильно понимаю что это мракобесие происходит из-за того, что препроцессор резолвит незнакомые ему имена макросов в 0 и получает #if 0 == 0?
в стандарте не нашел, а на cppreference есть конкретное разъяснение https://en.cppreference.com/w/cpp/preprocessor/conditional: After all macro expansion and evaluation of defined and __has_include (since C++17) expressions, any identifier which is not a boolean literal is replaced with the number ​0​ (this includes identifiers that are lexically keywords, but not alternative tokens like and).

ага, и в стандарте нашел 19.1.9:



Antony
02.07.2018
13:29:23
кленг может в это https://godbolt.org/g/qdmZFt
Завёл тикет на GCC https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86375

Alexander
02.07.2018
20:13:23
https://herbsutter.com/2018/07/02/trip-report-summer-iso-c-standards-meeting-rapperswil/

Alexey
02.07.2018
20:15:15
а на хабре та самая статья вышла уже?

Assasin
02.07.2018
20:25:38
еще нет

Dmitry
02.07.2018
20:32:03
Коллеги ) подскажите, STL-ным итераторам, пожалуйста. Инкремент двунаправленного итератора последнего элемента (например вектора или списка) дает .end(), декримент end() равноценен .back(), но вот что стандарт говорит в случае декремента begin()? Сходу не нашел. Пишу итератор, поэтому надо разобраться.

Admin
ERROR: S client not available

Bogdan
02.07.2018
20:36:08
end указывает на элемент следующий за последним, begin— будет указывать на rend() или предыдущий перед первым

Dmitry
02.07.2018
20:41:51
Но ведь rend() это итератор другого типа (реверс_итеатор), его нельзя вернуть, потому как декремент обычного итератора возвращает итератор своего же типа (не реверс_)

Bogdan
02.07.2018
20:44:14
rend для примера

Google
Vhäldemar
02.07.2018
20:45:12
нет
категоричный ответ

Aidar
02.07.2018
20:45:42
при коснтруировании reverse interator данные которые ты можешь потрогать изменяются

Bogdan
02.07.2018
20:45:48
begin указывает на первый элемент, rend на элемент до первого

Aidar
02.07.2018
20:45:48
словно указатель сдвинулся на 1

Vhäldemar
02.07.2018
20:46:28
а просто на цппреференс не дочтаточно пишут?

Vhäldemar
02.07.2018
20:46:35
The past-the-end element is the theoretical element that would follow the last element in the vector. It does not point to any element, and thus shall not be dereferenced

Return reverse iterator to reverse end Returns a reverse iterator pointing to the theoretical element preceding the first element in the vector (which is considered its reverse end). The range between vector::rbegin and vector::rend contains all the elements of the vector (in reverse order).

Dmitry
02.07.2018
20:48:00
begin<==>rend end<==>rbegin
Это неверно - begin, rbegin указывают на первый и на последний элемент (если он есть), а вот end и rеnd ни на кокой элемент не указывают

Aidar
02.07.2018
20:48:15
то что оно хранит != то к чему доступ

у форвард листа есть before_begin

vec.rbegin().base()==vec.end()

Dmitry
02.07.2018
20:50:27
смотри картинку
Так на картинке какраз и видно, что еnd не есть rbegin

Vhäldemar
02.07.2018
20:51:34
Aidar
02.07.2018
20:52:15
Vhäldemar
02.07.2018
20:52:28
Iterator to end Returns an iterator pointing to the past-the-end element in the sequence:

Aidar
02.07.2018
20:53:28
я пытаюсь вам донести что перед begin ничего нет

Google
Aidar
02.07.2018
20:53:47
нет rend перед begin

Страница 2171 из 2477