[dpdk-dev] [PATCH v5 00/13] introduce telemetry library

Laatz, Kevin kevin.laatz at intel.com
Fri Oct 19 12:16:42 CEST 2018


Hi Mattias,

On 18/10/2018 09:07, Mattias Rönnblom wrote:
> Most of the issues I pointed out in v2 of this patchset is still here.

Will recheck feedback for the next version.

With regards to comments on v2, 3/10, could you please help provide 
clarification on the below?

<Copy from the v2 feedback>
On 03/10/2018 20:06, Mattias Rönnblom wrote:
> On 2018-10-03 19:36, Kevin Laatz wrote:
>> From: Ciara Power <ciara.power at intel.com>
>> +
>> +    if (!telemetry->request_client) {
>> +        TELEMETRY_LOG_ERR("No client has been chosen to write to");
>> +        return -1;
>> +    } > +
>> +    if (!json_string) {
>> +        TELEMETRY_LOG_ERR("Invalid JSON string!");
>> +        return -1;
>> +    }
>> +
>> +    ret = send(telemetry->request_client->fd,
>> +            json_string, strlen(json_string), 0);
>
> How would this code handle a partial success (as in, for example, half 
> of the string fits the socket buffer)? In not, maybe switching over to 
> a SOCK_SEQPACKET AF_UNIX socket would be the best way around it.
>
Is the suggestion here simply to use socket(AF_UNIX, SOCK_SEQPACKET) 
instead of (AF_UNIX, SOCK_STREAM) ?
>
>> +
>> +    buffer_read = read(telemetry->accept_fd, buf, BUF_SIZE-1);
>
> This and the below code seem to assume that read() returns one and 
> only one message, but on a SOCK_STREAM, there is no such thing as a 
> message. It's a byte stream, and you need to provide your own framing, 
> or have an application protocol which allows only have one outstanding 
> request. If you do the latter, you still need to allow for "short" 
> (partial) read()s (i.e. re-read() until done).
>
Will the above solve this part of the problem too?

Best regards,
Kevin


More information about the dev mailing list