Diff for /loncom/LondConnection.pm between versions 1.24 and 1.25

version 1.24, 2004/02/09 10:57:37 version 1.25, 2004/02/09 13:33:16
Line 216  sub new { Line 216  sub new {
                      Cipher             => undef};                       Cipher             => undef};
     bless($self, $class);      bless($self, $class);
     unless ($self->{Socket} = IO::Socket::INET->new(PeerHost => $self->{Host},      unless ($self->{Socket} = IO::Socket::INET->new(PeerHost => $self->{Host},
        PeerPort => $self->{Port},      PeerPort => $self->{Port},
        Type     => SOCK_STREAM,      Type     => SOCK_STREAM,
        Proto    => "tcp",      Proto    => "tcp",
        Timeout  => 3)) {      Timeout  => 3)) {
  return undef; # Inidicates the socket could not be made.   return undef; # Inidicates the socket could not be made.
     }      }
     #      #
Line 309  sub Readable { Line 309  sub Readable {
  $socket->close();   $socket->close();
  return -1;   return -1;
     }      }
       
     &Debug(8," Transition out of Initialized");      &Debug(8," Transition out of Initialized");
     $self->{TransactionRequest} = $self->{TransactionReply};      $self->{TransactionRequest} = $self->{TransactionReply};
     $self->{InformWritable}     = 1;      $self->{InformWritable}     = 1;
Line 317  sub Readable { Line 317  sub Readable {
     $self->Transition("ChallengeReceived");      $self->Transition("ChallengeReceived");
     $self->{TimeoutRemaining}   = $self->{TimeoutValue};      $self->{TimeoutRemaining}   = $self->{TimeoutValue};
     return 0;      return 0;
    }  elsif ($self->{State} eq "ChallengeReplied") {   }  elsif ($self->{State} eq "ChallengeReplied") {
       if($self->{TransactionReply} ne "ok\n") {      if($self->{TransactionReply} ne "ok\n") {
          $self->Transition("Disconnected");   $self->Transition("Disconnected");
          $socket->close();   $socket->close();
          return -1;   return -1;
       }      }
       $self->Transition("RequestingVersion");      $self->Transition("RequestingVersion");
       $self->{InformReadable}   = 0;      $self->{InformReadable}   = 0;
       $self->{InformWritable}   = 1;      $self->{InformWritable}   = 1;
       $self->{TransactionRequest} = "version\n";      $self->{TransactionRequest} = "version\n";
       return 0;      return 0;
    } elsif ($self->{State} eq "ReadingVersionString") {   } elsif ($self->{State} eq "ReadingVersionString") {
       $self->{LondVersion}       = chomp($self->{TransactionReply});      $self->{LondVersion}       = chomp($self->{TransactionReply});
       $self->Transition("SetHost");      $self->Transition("SetHost");
       $self->{InformReadable}    = 0;      $self->{InformReadable}    = 0;
       $self->{InformWritable}    = 1;      $self->{InformWritable}    = 1;
       my $peer = $self->{LoncapaHim};      my $peer = $self->{LoncapaHim};
       $self->{TransactionRequest}= "sethost:$peer\n";      $self->{TransactionRequest}= "sethost:$peer\n";
       return 0;      return 0;
  } elsif ($self->{State} eq "HostSet") { # should be ok.   } elsif ($self->{State} eq "HostSet") { # should be ok.
       if($self->{TransactionReply} ne "ok\n") {      if($self->{TransactionReply} ne "ok\n") {
          $self->Transition("Disconnected");   $self->Transition("Disconnected");
          $socket->close();   $socket->close();
          return -1;   return -1;
       }      }
    $self->Transition("RequestingKey");      $self->Transition("RequestingKey");
    $self->{InformReadable}  = 0;      $self->{InformReadable}  = 0;
    $self->{InformWritable}  = 1;      $self->{InformWritable}  = 1;
    $self->{TransactionRequest} = "ekey\n";      $self->{TransactionRequest} = "ekey\n";
    return 0;      return 0;
  } elsif ($self->{State}  eq "ReceivingKey") {   } elsif ($self->{State}  eq "ReceivingKey") {
     my $buildkey = $self->{TransactionReply};      my $buildkey = $self->{TransactionReply};
     my $key = $self->{LoncapaHim}.$perlvar{'lonHostID'};      my $key = $self->{LoncapaHim}.$perlvar{'lonHostID'};
Line 395  sub Readable { Line 395  sub Readable {
     }      }
   
     return 0;      return 0;
       
 }  }
   
   
Line 410  mark the object as waiting for readabili Line 410  mark the object as waiting for readabili
 Returns  0 if successful, or -1 if not.  Returns  0 if successful, or -1 if not.
   
 =cut  =cut
   
 sub Writable {  sub Writable {
     my $self     = shift; # Get reference to the object.      my $self     = shift; # Get reference to the object.
     my $socket   = $self->{Socket};      my $socket   = $self->{Socket};
Line 428  sub Writable { Line 429  sub Writable {
  ($errno == POSIX::EINTR)          ||   ($errno == POSIX::EINTR)          ||
  ($errno ==  0)) {   ($errno ==  0)) {
  substr($self->{TransactionRequest}, 0, $nwritten) = ""; # rmv written part   substr($self->{TransactionRequest}, 0, $nwritten) = ""; # rmv written part
       if(length $self->{TransactionRequest} == 0) {   if(length $self->{TransactionRequest} == 0) {
          $self->{InformWritable} = 0;      $self->{InformWritable} = 0;
          $self->{InformReadable} = 1;      $self->{InformReadable} = 1;
          $self->{TransactionReply} = '';      $self->{TransactionReply} = '';
          #      #
          # Figure out the next state:      # Figure out the next state:
          #      #
          if($self->{State} eq "Connected") {      if($self->{State} eq "Connected") {
             $self->Transition("Initialized");   $self->Transition("Initialized");
          } elsif($self->{State} eq "ChallengeReceived") {      } elsif($self->{State} eq "ChallengeReceived") {
             $self->Transition("ChallengeReplied");   $self->Transition("ChallengeReplied");
          } elsif($self->{State} eq "RequestingVersion") {      } elsif($self->{State} eq "RequestingVersion") {
             $self->Transition("ReadingVersionString");   $self->Transition("ReadingVersionString");
          } elsif ($self->{State} eq "SetHost") {      } elsif ($self->{State} eq "SetHost") {
             $self->Transition("HostSet");   $self->Transition("HostSet");
          } elsif($self->{State} eq "RequestingKey") {      } elsif($self->{State} eq "RequestingKey") {
             $self->Transition("ReceivingKey");   $self->Transition("ReceivingKey");
 #            $self->{InformWritable} = 0;  #            $self->{InformWritable} = 0;
 #            $self->{InformReadable} = 1;  #            $self->{InformReadable} = 1;
 #            $self->{TransactionReply} = '';  #            $self->{TransactionReply} = '';
          } elsif ($self->{State} eq "SendingRequest") {      } elsif ($self->{State} eq "SendingRequest") {
             $self->Transition("ReceivingReply");   $self->Transition("ReceivingReply");
             $self->{TimeoutRemaining} = $self->{TimeoutValue};   $self->{TimeoutRemaining} = $self->{TimeoutValue};
          } elsif ($self->{State} eq "Disconnected") {      } elsif ($self->{State} eq "Disconnected") {
             return -1;   return -1;
          }      }
          return 0;      return 0;
       }   }
    } else { # The write failed (e.g. partner disconnected).      } else { # The write failed (e.g. partner disconnected).
       $self->Transition("Disconnected");   $self->Transition("Disconnected");
       $socket->close();   $socket->close();
       return -1;   return -1;
    }      }
   
 }  }
   
 =pod  =pod
   
 =head2 Tick  =head2 Tick

Removed from v.1.24  
changed lines
  Added in v.1.25


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>