- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
static int callback_from_db_message(void *data, int argc, char **argv, char **azColName) {
int *userSocket = data;
long time = atol(argv[1]);
bool edit = atoi(argv[2]);
char *sTime = mx_strnew(26);
ctime_r(&time, sTime);
char *buffer = new_messageClient1(argv[0], argv[3],sTime,edit);
usleep(10000);
int receive = send(*userSocket, buffer, mx_strlen(buffer), 0);
return argc - argc + mx_strlen(azColName[0] ? "" : "0") - mx_strlen(azColName[0] ? "" : "0");
}
MAPTbIwKA 18.02.2021 17:16 # 0
бля
bormand 18.02.2021 17:23 # 0
bormand 18.02.2021 17:19 # 0
Это нормально. А иногда наоборот могут на 2 пакета развалиться и половинками придти. TCP сокет -- это поток байтов без чётких границ между ними.
Deal with it.
MAPTbIwKA 18.02.2021 17:22 # 0
bormand 18.02.2021 17:24 # 0
MAPTbIwKA 18.02.2021 17:27 # 0
Я к тому, что если если sendto в UDP более допустимного размера пакета (в случае запрета фрагментаци размер наверное ограничен MTU), то тебе дадут пососать EMSGSIZE , не?
bormand 18.02.2021 17:35 # 0
А про MTU и запрет фрагментации не уверен. Скорее молча дропнет и/или какое-нибудь ICMP кинет в ответ, на которое всем пофиг. Ну короче я бы не надеялся на внятную ошибку тут.
MAPTbIwKA 18.02.2021 17:37 # 0
https://man7.org/linux/man-pages/man7/udp.7.html
Но там дальше написано, что можно и отключить.
bormand 18.02.2021 17:38 # 0
> Linux
Ну ты понел. Т.е. ошибку получить можно, но гарантий тут никаких, может и молча дропнуть по дороге.
MAPTbIwKA 18.02.2021 17:42 # 0
Случайная ОС может отлично фрагментнуть твой пакет, и послать его в далнее плавание, где его ебанёт первый маршрутизатор, не послав в ответ никакого ICMP.
Будет такая черная дыра. Собссно, ради этого MTU black hole discovery и запилили.
Но в UDP вообще никаких гарантий нет:) Ты просто пишшеь себе, и надеешься, что оно куда-то дойдет
bormand 18.02.2021 17:45 # 0
MAPTbIwKA 18.02.2021 17:50 # 0
Но там еще часто идет на заголовок IP, и на всякие порты UDP, так что наверное ты прав, где-то 500
Fike 18.02.2021 19:23 # 0
а, так вот как форма на kremlin.ru работает
bormand 18.02.2021 17:41 # 0
MAPTbIwKA 18.02.2021 17:48 # 0
Ну Борманд, ты же старый админ
https://tools.ietf.org/html/rfc1191
>Разве что по ICMP ответам, на которые все ложат хуй.
Есть такое. И тогда MTU приходится вручную уменьшать.
У меня такое было пару раз: вроде работает Интернет, но хуёво. Значит, какой-то пидор по дороге грохает пакет без отсылки ICMP. Уменьшаешь MTU -- работает хорошо.
Fike 18.02.2021 17:26 # +1
О, про это тоже смешная история была. Приходит как-то в @elasticsearch_ru человек и спрашивает: Ребят, а у меня почему-то логи длиннее килобайта не приходят, в чем дело? В смысле зачем я TCP input выбрал?
bormand 18.02.2021 17:48 # 0
Я сам когда-то налетал на эти грабли когда свою первую прогу с сетью писал. Мелкие редкие сообщения то норм доходят.
hormand 20.02.2021 22:04 # 0