![]() |
Oct 01 12:07:43.09: [ 8035]: <-- [9:AT+FRH=3\r] Oct 01 12:07:43.73: [ 8035]: --> [7:CONNECT] Oct 01 12:07:44.59: [ 8035]: --> [2:10 03] Oct 01 12:07:44.59: [ 8035]: --> [10:NO CARRIER] Oct 01 12:07:44.59: [ 8035]: MODEM No carrier Oct 01 12:07:44.59: [ 8035]: <-- [9:AT+FRH=3\r] Oct 01 12:07:45.33: [ 8035]: --> [7:CONNECT] Oct 01 12:07:46.29: [ 8035]: --> [2:10 03] Oct 01 12:07:46.29: [ 8035]: --> [10:NO CARRIER] Oct 01 12:07:46.29: [ 8035]: MODEM No carrier Oct 01 12:07:46.29: [ 8035]: <-- [9:AT+FRH=3\r] Oct 01 12:07:46.93: [ 8035]: --> [7:CONNECT]
--- hylafax.orig/faxd/Class1.c++ 2007-10-04 17:19:17.048371224 -0700 +++ hylafax/faxd/Class1.c++ 2007-10-04 17:55:39.548580760 -0700 @@ -1402,6 +1402,7 @@ u_short crpcnt = 0, rhcnt = 0; u_int onhooks = 0; gotCONNECT = true; + time_t start = Sys::now(); if (useV34) { do { if (crpcnt) traceFCF(dir == FCF_SNDR ? "SEND send" : "RECV send", FCF_CRP); @@ -1435,7 +1436,8 @@ startTimeout(ms); } } - } while ((lastResponse == AT_FCERROR || (lastResponse == AT_ERROR && onhooks <= conf.class1HookSensitivity)) && !wasTimeout()); + } while (((u_int) Sys::now()-start < conf.t1Timer) && !wasTimeout() && + (lastResponse == AT_FCERROR || (lastResponse == AT_ERROR && onhooks <= conf.class1HookSensitivity))); } if (readPending) { stopTimeout("waiting for HDLC flags"); @@ -1472,7 +1474,8 @@ * modem response at that point, anyway. So it is a good indicator for us. * So we simply repeat AT+FRH=3 in that case. */ - } while (!gotframe && !wasTimeout() && ((conf.class1HasRHConnectBug && !frame.getLength() && lastResponse == AT_NOCARRIER && rhcnt++ < 30) || + } while (((u_int) Sys::now()-start < conf.t1Timer) && !gotframe && !wasTimeout() && + ((conf.class1HasRHConnectBug && !frame.getLength() && lastResponse == AT_NOCARRIER && rhcnt++ < 30) || (docrp && crpcnt++ < 3 && switchingPause(emsg, 3) && transmitFrame(dir|FCF_CRP)))); /* triple switchingPause to avoid sending CRP during TCF */ return (gotframe); } else {