I actually found the problem.
In fact, there's no $crlf, only a $lf lol.
mIRC is actually not retriggering the event correctly, but it is not filling the %variable correctly either, mIRC stops at a $lf instead of the end of the buffer if this $lf isn't preceded by a $cr, which can only happen when using -f, yeah.
/test to reproduce:
alias test test_server | client 1 | client 2 | .timer 1 3 sockclose test_?*
alias test_server socklisten test_server 8000
on *:socklisten:test_server:{
if (!$sockerr) {
var %socket test_cclient $+ $sock(test_cclient?*,0)
bset -t &a 1 $+(mIRC,$lf,what else??)
sockaccept %socket
sockwrite %socket &a
}
}
alias client sockopen test_client $+ $1 127.0.0.1 8000
on *:sockread:test_client?*:{
if (!$sockerr) {
if ($sockname == test_client1) { var %a | sockread -f %a | echo -a client1 > %a }
elseif ($sockname == test_client2) { sockread 16 &a | echo -a client2 > $bvar(&a,1-).text -- $bvar(&a,1-) }
}
}