Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Простой баг оказался крайне подлым!
При тестировании девайса терминалкой и чепятании команды ручками, каждый символ уходил в отдельном пакете и создавалось впечатление, что всё работает.
После чего девайс был собран с применением большого количества термоклея, так что исправление бага оказалось совершенно непростым занятием >_<
какой то странный код
ну, data не инкрементируется, это понятно
но buf - нечто циклическое, где [0] - tag, [1] - opcode, [2],[3] - типа аргументы, аргументы при следующих итерациях могут стать опкодами или маркерами? точно len -= 4 не подразумевалось?
ну и да, ваш компилятор не поддерживает конструкцию switch (buf[1])?
Не, len -= 4 не катит, т.к. в пакете может прийти от 1 до 8 байт, что не обязательно кратно размеру команды, поэтому данные и буферизуются. Если в потоке есть маркер, то следующие 3 байта железно команда.
ну, data не инкрементируется, это понятно
но buf - нечто циклическое, где [0] - tag, [1] - opcode, [2],[3] - типа аргументы, аргументы при следующих итерациях могут стать опкодами или маркерами? точно len -= 4 не подразумевалось?
ну и да, ваш компилятор не поддерживает конструкцию switch (buf[1])?