Size: a a a

2021 October 20

LL

Lama Lover in ErlangRus
Надо проверить, но я что-то такое слышал
источник

SP

Sergey Prokhorov in ErlangRus
Там недавно запилили что большие сообщения фрагментируются при пересылке, может с этим путаешь?
источник

LL

Lama Lover in ErlangRus
Да, видимо с этим перепутал
источник
2021 October 21

I

Isa in ErlangRus
Всем привет, я новичок в erlang, в данный момент учусь работать с портами. Можете объяснить в чем может быть проблема. Я пишу в порт данные, программа должна принять их и просто отправить обратно, но erlang ничего не получает.  На скринах пример того что я делал на erlang и внешняя программа на cpp. Везде все просто, но почему то не работает. Заранее спасибо)
источник

I

Isa in ErlangRus
источник

MK

Matwey Kornilov in ErlangRus
open port сделай с другими опциями. Тебе подойдёт line
источник

MK

Matwey Kornilov in ErlangRus
Я могу и наврать, через час пример поищу
источник

MK

Matwey Kornilov in ErlangRus
[stream, {line, 512}, exit_status, binary]
источник

MK

Matwey Kornilov in ErlangRus
Вот так попробуй. Судя по коду C++ ты хочешь чтобы порт общался строками с тобой, для этого нужен параметр line
источник

MK

Matwey Kornilov in ErlangRus
Иначе порт будет общаться с твоей программой в бинарном сериализованном формате данных EETF, и его через std::cin не прочитать
источник

S

Serg in ErlangRus
      port = Port.open({:spawn, "openssl genrsa 2048"}, [:binary, :exit_status])
     private_key_str =
       receive do
         {^port, {:data, data}} ->
           data
       end
     Port.close(port)
     [pem_entry] = :public_key.pem_decode(private_key_str)
     private_key = :public_key.pem_entry_decode(pem_entry)
     {:RSAPrivateKey, _, modulus_decimal, public_exponent_decimal, _, _, _,_, _, _, _} = private_key

генерирую RSA-ключ через порты.

локально на ноутбуке всегда работает без проблем сколько бы не запускал.

на сервере 8-15% генераций сваливается в exception так как elixir не получает полностью строковые данные (ключ) а только его обрезанную часть...

есть мысли в какую сторону копать? это от каких-то настроек ОС на серваке зависит? или есть какая-то специфика в erlang vm? Заранее спасибо

@matwey_kornilov
источник

MK

Matwey Kornilov in ErlangRus
Честно говоря, мне кажется что не гарантируется, что весь текст приедет в одном сообщении. Процесс openssl после генерации ключа должен завершиться, значит от порта можно поймать 'EXIT' при желании. Ну вот я бы принимал весь текст пока не придёт 'EXIT'.
источник

MK

Matwey Kornilov in ErlangRus
Кстати, а эрланговским crypto нельзя ключ нагенерировать?
источник

SP

Sergey Prokhorov in ErlangRus
Можно
источник

MK

Matwey Kornilov in ErlangRus
Мне кажется так будет лучше
источник

SP

Sergey Prokhorov in ErlangRus
источник

SP

Sergey Prokhorov in ErlangRus
Ну и конечно не стоит матчить рекорды как таплы. Есть hrl с описанием рекордов -include_lib("public_key/include/public_key.hrl").
источник

LL

Lama Lover in ErlangRus
так это же эликсир
источник

SP

Sergey Prokhorov in ErlangRus
Я эликсир не особо знаю. Если hrl там нельзя подключать, то наверное лучше небольшой .erl файл сделать с геттерами. В Erlang ssl/crypto любят частенько менять всякие внутренности. Так что риск что при апгрейде otp что-то сломается
источник

S

Serg in ErlangRus
ok. спасибо всем за ответы
источник