<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<div name="messageBodySection">Stanislaw,<br />
<br />
Is there a common solution to this problem? Erlang was built to be used in servers/switches, i would assume that there was a solution built into OTP?<br />
<br />
If not, do you handle it just at the application later with gen_tcp:recv() and read X bytes at a time from the socket based on delimiters and such? How would you reconcile this with using a gen_server implementation that receives messages from the ssl socket in handle info ?<br />
<br />
I appreciate the help, I’m happy I didn’t roll this further<br /></div>
<div name="messageReplySection"><br />
On Oct 31, 2017, 12:21 PM -0400, Stanislaw Klekot <erlang.org@jarowit.net>, wrote:<br />
<blockquote type="cite">On Tue, Oct 31, 2017 at 12:10:49PM -0400, code wiget wrote:<br />
<blockquote type="cite">Vimal - I am using {active, once}. And I like when it comes in as<br />
a full packet, so I do not want to change anything that could<br />
eliminate that behavior.<br /></blockquote>
<br />
This behaviour is a coincidence that bases on your Erlang code being<br />
able to keep up with the sender, and as such, it's brittle.<br />
<br />
Do a test: wait some time (1s) in your code before setting {active,once}<br />
again and see what you'll get. My bet is several packets clumped<br />
together.<br />
<br />
This is how read() and recv() work on stream BSD sockets. If the<br />
socket's buffer is non-empty, they return whatever is in the buffer (up<br />
to read length). There's nothing magical that Erlang would do on the<br />
sockets for {packet,raw}.<br />
<br />
--<br />
Stanislaw Klekot<br /></blockquote>
</div>
</body>
</html>