[mod.protocols.appletalk] Register/Lookup

jv0l#@ANDREW.CMU.EDU.UUCP (03/11/87)

Dave,

I have three answers to this problem.  First, Lightspeed isn't working
correctly (that is their NBPExtract isn't working as it should).  If any-
body has used this call with success, they can post and verify that it does
work.  Otherwise...  If you want to know quickly, you may want to get
somebody (or yourself) check out the calls from MacsBug.  If that is the
problem, good luck...

If the first answer doesn't work (ie no bugs), you may be having this problem:
Are you using bridges?  If so, when you peeked at the data, you may have
been looking at a socket sent from RTMP (that is Routing Table Maintenance
Protocol in English).  Somebody please correct me if I'm wrong on the
following:  If a DDP socket is being sent across nets, is it sent from the
original socket number, or does the RTMP socket send it to the bridge with
the RTMP socket number (socket 1)?  As to why socket number 1 is read from
the NBPExtract (vs Peek), I'm lost here.

Lastly, you have a problem with your program.  I hope that by the time you
read this message, the problem will have been solved.  If not, are you
sure that you passed register the correct socket, and outputted the right
one in the extract?  These might sound stupid, but sometimes the most
obvious bugs are the hardest to find.

There may not be any truth to anything that I have said, but I noticed that
this had a "PLEASE RUSH INFORMATION" request at the end, so I figured I may
say everything I could think of.  If any of this is wrong, please DONT post
flames, only corrections so the rest of us are more knowledgable.

--thanks

-Justin
jv0l@andrew.cmu.edu

daveg@dartmouth.EDU.UUCP (03/12/87)

yes,  I have found the problem.....    as it turns out,  there is a 
bug in lightspeed,  but not in the appletalk code.  Here is something 
similar to what was happening.

before entering thi code block,  the variable atpsocket equaled 200.

with myABRecord^^ do
begin
...
...
...
nbpAddress.asocket:=atpsocket;
...
...
...
end;

async:=true;
anOSErr:=NBPRegister(myABrecord,async);

the problem is with the use of with in lightspeed.
any normal rational human would assume that the value of myABRecord^^.nbpAddress
would be that of atpsocket after exiting the WITH block.  The assignment
above gave me a value of one however.  

I fixed thi by doing the assigment outside of the WITH block and all is
now well.  I am now on my way to bigger and better bugs.  Thanks much
for the reply.
					Dave Green
					daveg@dartmouth.EDU