<d_bot_>
<quernd> It may be the easiest but note that the Envoy setup doesn't allow streaming. It's possible in pure OCaml though. We've been using this fork of jeffa5's `ocaml-grpc`: https://github.com/dialohq/ocaml-grpc/tree/bugfixes for both server and client bidirectional streaming and so far it's working out well. The `ocaml-protoc-plugin` changes are not strictly necessary, it's a quality of life enhancement.
Serpent7776 has joined #ocaml
spip has joined #ocaml
bobo has quit [Ping timeout: 252 seconds]
namkeleser has joined #ocaml
mro has joined #ocaml
Haudegen has joined #ocaml
Tuplanolla has joined #ocaml
spip has quit [Ping timeout: 252 seconds]
bobo has joined #ocaml
mro has quit [Remote host closed the connection]
gravicappa has quit [Ping timeout: 272 seconds]
spip has joined #ocaml
bobo has quit [Ping timeout: 250 seconds]
mro has joined #ocaml
Anarchos has joined #ocaml
Anarchos has quit [Quit: Vision[]: i've been blurred!]
gravicappa has joined #ocaml
Anarchos has joined #ocaml
namkeleser has quit [Quit: Client closed]
mro has quit [Remote host closed the connection]
mro has joined #ocaml
bartholin has joined #ocaml
azimut has quit [Remote host closed the connection]
azimut has joined #ocaml
bartholin has quit [Ping timeout: 252 seconds]
namkeleser has joined #ocaml
Anarchos has quit [Quit: Vision[]: i've been blurred!]
<d_bot_>
<quernd> You can use `H2_lwt_unix.Client.TLS` or `SSL` to create a secure connection, if that's what you mean.
<d_bot_>
<mbacarella> i'm not really sure what i mean. grpc is pretty mystifying to me still
adrien_ is now known as adrien
<d_bot_>
<quernd> Typically, you'd create one connection and keep it open to do all the RPC requests over it
<d_bot_>
<mbacarella> will try it though
<d_bot_>
<Anurag> Is GRPC mandatory for your project? You might want to start with a simpler rpc option 🙃
<d_bot_>
<mbacarella> sadly yes
<d_bot_>
<mbacarella> i would very much like to not be using grpc
<d_bot_>
<Anurag> 😅 Goodluck!
<d_bot_>
<quernd> Good luck, shout if you run into issues 🙂
bartholin has joined #ocaml
<d_bot_>
<mbacarella> > INTERNAL_ERROR (0x2), Failure("Tls not available")
<d_bot_>
<mbacarella> I assume I need to opam install tls
<d_bot_>
<Anurag> I believe so. I think the error originates in the underlying `gluten` library that probes the system to check whether `ocaml-tls` is installed or not, and fails if you attempt to use the tls transport without installing ocaml-tls
<sleepydog>
I don't know what a secure_channel is. It doesn't seem to be part of GRPC, but rather a name chosen for the python api
<sleepydog>
http/2 all but requires TLS, so every "channel" (I assume that refers to an http2 stream) should be secure
<d_bot_>
<quernd> "channel" is more like a connection, not a stream
<sleepydog>
ah, ok. and i guess i was wrong about http2 requiring encryption. sorry for the confusion
<d_bot_>
<quernd> It's not required, but browsers enforce it, apparently
waleee has joined #ocaml
<d_bot_>
<mbacarella> hmm, when i try Client.TLS instead of just Client instead of getting a read error it just hangs
<d_bot_>
<mbacarella> tcpdump does show a connection opens
mro has joined #ocaml
<sleepydog>
is there an ssl handshake?
<d_bot_>
<mbacarella> there is back and forth
<d_bot_>
<mbacarella> might be time for mitmproxy
mro has quit [Remote host closed the connection]
<d_bot_>
<mbacarella> oh maybe i shouldn't use ~error_handler:ignore
<d_bot_>
<quernd> That one is very unspecific, unfortunately. I ran into it e.g. when my headers weren't all lowercase
<d_bot_>
<mbacarella> am i wrong to be mad at google here
<d_bot_>
<mbacarella> anyway. guess i'll have another coffee and start adding prints up and down the stack
<sleepydog>
mad over GRPC? or are you talking to a googleapi
<d_bot_>
<mbacarella> mad that they kinda threw their weight behind pushing grpc
<d_bot_>
<mbacarella> but also coupled it with h2
<sleepydog>
i work at google and just resolved a weeks-long customer issue that ended up being caused by contention over the 1 connection Go's GRPC client uses by default. so i'm mad at google too :)
<d_bot_>
<mbacarella> right. also go ðŸ˜
<d_bot_>
<quernd> My guess is it's wrong/missing headers but that's just from experience.
<sleepydog>
i think it was a mistake to push a stubby-like protocol without also bringing along its transport (quic)
perrierjouet has quit [Quit: WeeChat 3.4]
<d_bot_>
<mbacarella> yeah, fortunately i have a python implementation that works that i can run through mitm proxy and will compare what the ocaml one is doing
<d_bot_>
<mbacarella> just, you know, caffeine
<d_bot_>
<mbacarella> thanks for the hand-holding. together we'll defeat grpc
perrierjouet has joined #ocaml
mro has quit [Remote host closed the connection]
jlrnick has joined #ocaml
_whitelogger_ has joined #ocaml
_whitelogger has quit [Read error: Connection reset by peer]
<d_bot_>
<quernd> Just to elaborate on my previous remark about headers, I have this minimal example of a secure call to grpc-test.sandbox.googleapis.com:443 where it fails with this non-descript `PROTOCOL_ERROR (0x1)` as soon as I leave out a required header or use uppercase. Case in point, for the Google test API you need the `:authority"` header even though generally it's optional
namkeleser has quit [Quit: Client closed]
mrvn has left #ocaml [#ocaml]
bartholin has quit [Ping timeout: 256 seconds]
hannes_ is now known as hannes
mro has joined #ocaml
zebrag has quit [Quit: Konversation terminated!]
zebrag has joined #ocaml
mro has quit [Remote host closed the connection]
bartholin has joined #ocaml
mro has joined #ocaml
mro has quit [Ping timeout: 250 seconds]
mro has joined #ocaml
oriba has joined #ocaml
mro has quit [Remote host closed the connection]
bartholin has quit [Quit: Leaving]
kaph_ has quit [Read error: Connection reset by peer]
Everything has quit [Quit: leaving]
haesbaert has quit [Ping timeout: 250 seconds]
kaph has joined #ocaml
<companion_cube>
I've never used it, but twirp seems a lot more reasonable
<companion_cube>
just need to modify ocaml-protoc to produce it :p
mro has joined #ocaml
gravicappa has quit [Ping timeout: 240 seconds]
mro has quit [Remote host closed the connection]
<d_bot_>
<anmonteiro> Just to add here that the h2 API is fairly lowlevel and expects you to do the right thing. If the right thing is not obvious open an issue and I’ll see what we can improve
mro has joined #ocaml
<d_bot_>
<quernd> Not blaming h2 at all for this, that would be shooting the messenger 😉
mro_ has joined #ocaml
<companion_cube>
isn't also grpc this thing google does NOT use internally
mro has quit [Ping timeout: 256 seconds]
mro_ has quit [Quit: Leaving...]
jlrnick has quit [Quit: ouch!]
rgrinberg has joined #ocaml
wyrd has quit [Ping timeout: 240 seconds]
<d_bot_>
<mbacarella> it was giving me protocol error 0x1 because i ***obviously*** forgot to include the header content-type: application/grpc
<d_bot_>
<mbacarella> *headdesk*
<d_bot_>
<mbacarella> only had to man-in-the-middle-attack this grpc service to figure it out
wyrd has joined #ocaml
rgrinberg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]