При использовании WS сервера на си, вылетает broken pipe после нескольких отправленных сообщений

Пишу свой ws сервер(использую Linux) на си. Для теста пытаюсь отправить по протоколу WS массив, диной 100000 байт заполненный буковой 'a'. Для отправки данных такого размера в первый байт фрейма веб соккета записывается 10000001 - это значит, что данные не фрагментированы и они текстовые, во второй байт 01111111 - это значит, что маски нет и длина сообщения больше 65535, в следующие 8 байт записывается длина сообщения, у меня длина 100000 и она занимает только последние 3 байта.

Проблема в том, что после 2-3 отправлений программа крашится и вылетает Broken Pipe. Пробовал пинговать, тоже не помогает. Пробовал разбивать данные диной в 100к и отправлять по 10к, тоже не помогло. Когда я отправляю маленькое количество данных этой ошибки не возникает. Пожалуйста подскажите от чего это происходит и как это исправить.

Со стороны клиента в консоль браузра вылетает вот такое сообщение

VM270:1 WebSocket connection to 'ws://localhost:8000/' failed: Invalid frame header

Возможно это означает, что я ошибся во фрейме, но я не могу найти свою ошибку, по моему все верно

char test[100000];
int h = 100000;
for (int i = 0; i < 100000; i++)
    test[i] = 'a';
char frame[4];
while (1)
{
    char frame[10];
    frame[0] = 0x81;
    frame[1] = 0x7F;
    frame[2] = 0;
    frame[3] = 0;
    frame[4] = 0;
    frame[5] = 0;
    frame[6] = 0;
    frame[9] = h & 0xff;
    h >>= 8;
    frame[8] = h & 0xff;
    h >>= 8;
    frame[7] = h & 0xff;
    send(client_d, frame, 10, 0);
    send(client_d, test, 100000, 0);
}

Ответы (0 шт):