[Oberon] WinAos networking problems

John Drake jmdrake_98 at yahoo.com
Fri Jan 16 22:51:31 CET 2004


Hello all,

I'm posting this because I'm at my wits end.  I just
can't figure this one out even looking at the source
code.

First the good news.  Thanks to the latest version
of WinAosOberon I can finally get the WebDAV
client working correctly PROVIDED that I'm using
it from my dial-up account at work.  (I can't seem
to get the server working right, but that's another
post).  However if I try the ethernet connection
at work it times out.  But now here's the strange
part.  I can't seem to get ANY network connection
to work!  That's right even Desktops.OpenDoc 
http://www.google.com times out.  I can still do
this fine from PlugIn Oberon.  I can also do simple
stuff like this from the 1.02 version of 
WinAosOberon.  My guess is that both of these
versions use Win32.NetSystem.Mod as opposed to
Win32.AosTCP.Mod like WAOS 1.06.  

A few other pieces of the puzzle.  My XMLRPC.Mod
code works fine from dial-up.  It chokes WAOS 
1.06 from a direct connection.  This used to work
on a previous version of WinAOS (I forget which
one) but unfortunately I didn't save that one.
(Don't ask me how I still have a version of
1.02).  It chokes 1.02 big time.  Also it's the
actual "connection" that's the problem.
Win32.AosTestNet.Mod works fine because all that
does in a DNS lookup (using AosDNS).  But when
I try to do an actual connection that's when the
timeout occurs.

Painfully stepping through the source I found I 
was getting hung in this procedure.

PROCEDURE AwaitStateInternal( good, bad: SET;   
   ms: LONGINT;  VAR res:  LONGINT );  
BEGIN 
  Log(TRUE);
  AWAIT( ~(inAwtState IN flags) );  INCL( flags, 
     inAwtState );  
  IF (~(state IN (good + bad))) THEN 
    EXCL( flags, TimeoutB );  
    IF ms # -1 THEN 
     IF timeoutB = NIL THEN NEW( timeoutB ) END;  
       AosActive.SetTimeout( timeoutB, 
      SELF.HandleTimeoutB, ms );  
     END;  
     AWAIT( (state IN (good + bad)) OR (TimeoutB IN 
        flags) );  
     IF ms # -1 THEN AosActive.CancelTimeout( 
       timeoutB ) END;  
    END;  
    IF (state IN good) THEN res := Ok
    ELSIF state IN bad THEN res := NotConnected
    ELSE res := TimedOut
  END;  
  EXCL( flags, inAwtState );  
END AwaitStateInternal;  

I'm no Active Oberon guru, but I surmise that the
statement:

  AWAIT( ~(inAwtState IN flags) );

Suspends execution of the procedure until inAwtState
is not in "flags".  But where is inAwtState supposed
to be excluded from flags during this time?  What
is the background task that is supposed to take care
of this?

One other note.  My work connection is behind a
firewall and they did recently install some internet
filtering.  But before someone gives me some lame
"well that's your problem" answer, remember that
PluginOberon is able to make connections just fine.
So what, oh what could the problem be?

Regards,

John M. Drake

__________________________________
Do you Yahoo!?
Yahoo! Hotjobs: Enter the "Signing Bonus" Sweepstakes
http://hotjobs.sweepstakes.yahoo.com/signingbonus



More information about the Oberon mailing list