Size: a a a

2021 May 14

A

Alexander in ru.nim.talks
всё же не ясно, почему server.shouldAcceptRequest всё время true возвращает получается? - по памяти может течь, если только asyncCheck  постоянно спинится
источник

VB

Vladimir Berezenko in ru.nim.talks
асинкчек фактически просто кладёт коллбэк на стек и сразу на первом-же await возвращает управление обратно. если таких асинкчеков происходит больше чем завершается коллбэков - будет жраться память ессно.
источник

A

Alexander in ru.nim.talks
да, это понятно, но почему он вообще туда заходит в эту ветку, почему server.shouldAcceptRequest отдаёт true
источник

VB

Vladimir Berezenko in ru.nim.talks
не знаю, я внутрь кода не смотрел. ща гляну.
источник

VB

Vladimir Berezenko in ru.nim.talks
ага. понял
источник

VB

Vladimir Berezenko in ru.nim.talks
Эта ф-ция будет возвращать true до тех пор, пока количество дескрипторов(сокетов открытых) будет меньше чем server.maxFDs.  Это всё что там происходит и проверяется. По факту её надо вызывать перед acceptRequest() для того, чтобы не влететь в ситуацию, когда у тебя лимит на 1024 дескриптора, а ты пытаешься открыть 1025й при акцепте.
источник

VB

Vladimir Berezenko in ru.nim.talks
ну собсна в serve() так и происходит.
источник

A

Alexander in ru.nim.talks
ага, ну т.е. проблема в том, что, вероятно, она делает не то, что вроде бы ожидалось
источник

VB

Vladimir Berezenko in ru.nim.talks
то, что надо она делает. называется через жопу, но делает всё правильно
источник

A

Alexander in ru.nim.talks
теперь мне осталось только ipv6 как-то прикрутить
источник

VB

Vladimir Berezenko in ru.nim.talks
serve() проверяет может ли принять ещё сокет и если может - ожидает принятия сокета.
источник

VB

Vladimir Berezenko in ru.nim.talks
зачем прикручивать? если у тебя есть ipv6 всё должно отрабатывать без каких-либо доработок и переделок.
источник

A

Alexander in ru.nim.talks
у меня есть, но не работает
источник

VB

Vladimir Berezenko in ru.nim.talks
netstat -lpn при запущеном сервере. процесс должен слушать адрес "::" и нужный порт.
источник

A

Alexander in ru.nim.talks
я в netstat не очень, но lsof такой:
nt        21027                   root    3u     IPv4              71990      0t0        TCP *:http (LISTEN)
источник

A

Alexander in ru.nim.talks
т.е. ipv4, может надо "::" указать ему чтобы слушал
источник

VB

Vladimir Berezenko in ru.nim.talks
ну если ты указываешь 0.0.0.0:80 то будет ipv4
источник

A

Alexander in ru.nim.talks
не, я ничего не указываю, видимо там дефолт 0.0.0.0
источник

VB

Vladimir Berezenko in ru.nim.talks
там дефолт ""
источник

VB

Vladimir Berezenko in ru.nim.talks
proc listen*(server: AsyncHttpServer; port: Port; address = "") =
источник