It is this code in Printer.cpp around line 959:
if (
#if MIN_EXTRUDER_TEMP > 20
(Extruder::current->tempControl.currentTemperatureC < MIN_EXTRUDER_TEMP && !Printer::isColdExtrusionAllowed() && Extruder::current->tempControl.sensorType != 0)
#endif
fabs(com->E) * extrusionFactor > EXTRUDE_MAXLENGTH) {
p = 0;
destinationPositionTransformed[E_AXIS] = currentPositionTransformed[E_AXIS] = 0;
} else {
destinationPositionTransformed[E_AXIS] = 0;
currentPositionTransformed[E_AXIS] = -convertToMM(com->E);
}
destinationSteps[E_AXIS] = 0;
currentPositionSteps[E_AXIS] = -p;
} else {
if (
#if MIN_EXTRUDER_TEMP > 20
(Extruder::current->tempControl.currentTemperatureC < MIN_EXTRUDER_TEMP && !Printer::isColdExtrusionAllowed() && Extruder::current->tempControl.sensorType != 0) ||
#endif
fabs(p - currentPositionSteps[E_AXIS]) * extrusionFactor > EXTRUDE_MAXLENGTH * axisStepsPerMM[E_AXIS]) {
currentPositionSteps[E_AXIS] = p;
destinationPositionTransformed[E_AXIS] = currentPositionTransformed[E_AXIS] = convertToMM(com->E);
} else {
destinationPositionTransformed[E_AXIS] = convertToMM(com->E);
}
destinationSteps[E_AXIS] = p;
}
As you see the prevent here is only dependent on EXTRUDE_MAXLENGTH.
With which software do you send the moves? Maybe the software also has a protection preventing gcode form being send? So check log/console what gets send.