![]() |
I am going to check into the code, for right now I am going to modify our faxrcvd script to grep the NDID out of the actual logfile. Will report back later what I find from the source. Regards, Ulf. --------------------------------------------------------------------- Autotradecenter.com Inc, IT Manager, T: 650-532-6382, F: 650-532-6441 4600 Bohannon Drive, Suite 100, Menlo Park, CA 94025 --------------------------------------------------------------------- > -----Original Message----- > From: Lee Howard [mailto:faxguy@xxxxxxxxxxxxxxxx] > Sent: Tuesday, July 13, 2004 13:33 > To: Ulf Zimmermann > Cc: hylafax-users@xxxxxxxxxxx > Subject: Re: [hylafax-users] Problem with inbound routing, still > > On 2004.07.13 13:07 hylafax-users-bounce@xxxxxxxxxxx wrote: > > Hello, everyone again. > > > > I still have a problem that if the sending side has no caller ID (NMBR > > gets set to "<NONE>") faxGettyApp.c++ calls faxrcvd without the NDID > > in > > the last parameter field. This is becoming a critical problem for us, > > as > > a client is currently trying to test our call center (sending fax in > > to > > sign up, checking for turn around times). Can someone, who knows the > > code, point me where I need to look (my C++ is unfortunately not much > > existing). > > In faxd/ClassModem.c++ in the ClassModem::waitForRings function you > will find this code: > > switch (atResponse(rbuf, conf.ringTimeout)) { > case AT_OTHER: // check distinctive ring > if (streq(conf.ringData, rbuf)) > type = CALLTYPE_DATA; > else if (streq(conf.ringFax, rbuf)) > type = CALLTYPE_FAX; > else if (streq(conf.ringVoice, rbuf)) > type = CALLTYPE_VOICE; > else { > if (conf.ringExtended.length() && strneq(rbuf, > conf.ringExtended, conf.ringExtended.length())) // extended RING > gotring = true; > conf.parseCID(rbuf, cid); > /* DID modems may send DID data in lieu of RING */ > if ((cid.name.length() >= conf.cidNameAnswerLength && > conf.cidNameAnswerLength > 0) || > (cid.number.length() >= conf.cidNumberAnswerLength > && > conf.cidNumberAnswerLength > 0)) > gotring = true; > break; > } > > Basically that says that if we're waiting for rings and got a response > from the modem and it was not a predefined command-response (i.e., > "NMBR=<NONE>" is not pre-defined) then we check it against the > RingData, RingFax, and RingVoice settings, and it it doesn't match > those, then we check it against the RingExtended setting and then try > to parse caller-id information from it with the parseCID function. > > The parseCID function is found in faxd/ModemConfig.c++ and goes like > this: > > void > ModemConfig::parseCID(const char* rbuf, CallerID& cid) const > { > if (cidName.length() && strneq(rbuf, cidName, cidName.length())) > cid.name = cid.name | rbuf+cidName.length(); > if (cidNumber.length() && strneq(rbuf, cidNumber, > cidNumber.length())) > cid.number = cid.number | rbuf+cidNumber.length(); > } > > It's fairly straight-forward. If the first characters of the response > match the CIDName and/or CIDNumber settings then the remainder of the > response is assigned to the CIDName and CIDNumber "variables" > accordingly. > > You probably want to add debugging statements to even check to see if > parseCID is being called when "NMBR=<NONE>" is received from the modem; > my guess would be that it is not, and that would be some problem with > waitForRings, I'd think. > > Lee. ____________________ HylaFAX(tm) Users Mailing List _______________________ To subscribe/unsubscribe, click http://lists.hylafax.org/cgi-bin/lsg2.cgi On UNIX: mail -s unsubscribe hylafax-users-request@xxxxxxxxxxx < /dev/null *To learn about commercial HylaFAX(tm) support, mail sales@xxxxxxxxx*