else { imclog( "%s: Descriptor error on #%d: %s", __FUNCTION__, this_imcmud->desc, strerror( iErr ) ); return FALSE; }
else if( nRead == -1 ) { imclog( "%s: Descriptor error on #%d: %s", __FUNCTION__, this_imcmud->desc, strerror( iErr ) ); return FALSE; }
In imc.c, function imc_read_socket, locate:
And change that to:
Apparently for whatever reason it is possible for nRead to be something below -1 which produces cryptic errors that aren't explained.