lj
October 28th, 2003, 03:29 PM
I've noticed some unusual behaviour with the WinLIRC plugin - connecting it to a LIRC server (on a remote machine), it will ignore keystrokes until a large number of them have built up, and then execute them all in a row.
On the remote side, the transmit window (the bytes that have been sent but not acknowledged) grows larger and larger, until it has around 2k of data in it, and the it drops back to 0 again (at which point the LIRC plugin posts ten or twenty commands).
If I put a wrapper in between the two, and insert about 2k of nulls after each line, everything works perfectly. The first command after toggling the plugin on and off works perfectly as well.
My guess is that the plugin has some kind of receive buffer that is working incorrectly, generating an interrupt when it is full, rather than when each packet is received. This does not explain, however, why the packets are not being acknowledged.
My other hypothesis is that the plugin is polling, but not often enough. This may explain why the packets are not being acknowledged, but does not explain why sending a large packet causes the plugin to start working again.
Any ideas as to what is causing this behaviour?
Does the source code for the WinLIRC plugin exist in the wild? I'm guessing not, as that would make things far too easy.
On the remote side, the transmit window (the bytes that have been sent but not acknowledged) grows larger and larger, until it has around 2k of data in it, and the it drops back to 0 again (at which point the LIRC plugin posts ten or twenty commands).
If I put a wrapper in between the two, and insert about 2k of nulls after each line, everything works perfectly. The first command after toggling the plugin on and off works perfectly as well.
My guess is that the plugin has some kind of receive buffer that is working incorrectly, generating an interrupt when it is full, rather than when each packet is received. This does not explain, however, why the packets are not being acknowledged.
My other hypothesis is that the plugin is polling, but not often enough. This may explain why the packets are not being acknowledged, but does not explain why sending a large packet causes the plugin to start working again.
Any ideas as to what is causing this behaviour?
Does the source code for the WinLIRC plugin exist in the wild? I'm guessing not, as that would make things far too easy.