
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,
результат негативный.
Как исправить эту ошибку?

Bogdan
02.07.2018
09:56:54

Ilia
02.07.2018
09:57:02

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

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

Zhanat
02.07.2018
10:12:30

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

Дед Пегас
02.07.2018
10:20:15
Да.
Теперь такие оптимизации компилятор производст самостоятельно и автоматически по нужде.

Max
02.07.2018
10:25:01
OpenSSL 1.1.0 Changes - OpenSSLWiki
https://wiki.openssl.org/index.php/OpenSSL_1.1.0_Changes

Zhanat
02.07.2018
10:25:58

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

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

Constantine
02.07.2018
11:13:38

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
Понятно. Спасибо!

Constantine
02.07.2018
11:26:50

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 заведу

Anatoly
02.07.2018
11:30:02

Antony
02.07.2018
11:41:11

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 компилируется тогда?

Scarf
02.07.2018
11:48:23

Alexey
02.07.2018
11:53:40

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

Zhanat
02.07.2018
12:03:03

Max
02.07.2018
12:08:37

Zhanat
02.07.2018
12:11:11

Max
02.07.2018
12:12:34

Anatoly
02.07.2018
12:15:54
ага, и в стандарте нашел 19.1.9:

Antony
02.07.2018
13:29:23

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

Aidar
02.07.2018
20:44:50
begin<==>rend end<==>rbegin

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
а просто на цппреференс не дочтаточно пишут?

Aidar
02.07.2018
20:46:34

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

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

Dmitry
02.07.2018
20:53:55