[BACK]Return to dispatch.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Diff for /src/usr.bin/ssh/dispatch.c between version 1.10.2.1 and 1.10.2.2

version 1.10.2.1, 2001/09/27 19:03:54 version 1.10.2.2, 2002/03/09 00:20:44
Line 37 
Line 37 
 dispatch_fn *dispatch[DISPATCH_MAX];  dispatch_fn *dispatch[DISPATCH_MAX];
   
 void  void
 dispatch_protocol_error(int type, int plen, void *ctxt)  dispatch_protocol_error(int type, u_int32_t seq, void *ctxt)
 {  {
         fatal("dispatch_protocol_error: type %d plen %d", type, plen);          log("dispatch_protocol_error: type %d seq %u", type, seq);
           if (!compat20)
                   fatal("protocol error");
           packet_start(SSH2_MSG_UNIMPLEMENTED);
           packet_put_int(seq);
           packet_send();
           packet_write_wait();
 }  }
 void  void
   dispatch_protocol_ignore(int type, u_int32_t seq, void *ctxt)
   {
           log("dispatch_protocol_ignore: type %d seq %u", type, seq);
   }
   void
 dispatch_init(dispatch_fn *dflt)  dispatch_init(dispatch_fn *dflt)
 {  {
         int i;          u_int i;
         for (i = 0; i < DISPATCH_MAX; i++)          for (i = 0; i < DISPATCH_MAX; i++)
                 dispatch[i] = dflt;                  dispatch[i] = dflt;
 }  }
 void  void
   dispatch_range(u_int from, u_int to, dispatch_fn *fn)
   {
           u_int i;
   
           for (i = from; i <= to; i++) {
                   if (i >= DISPATCH_MAX)
                           break;
                   dispatch[i] = fn;
           }
   }
   void
 dispatch_set(int type, dispatch_fn *fn)  dispatch_set(int type, dispatch_fn *fn)
 {  {
         dispatch[type] = fn;          dispatch[type] = fn;
Line 57 
Line 79 
 dispatch_run(int mode, int *done, void *ctxt)  dispatch_run(int mode, int *done, void *ctxt)
 {  {
         for (;;) {          for (;;) {
                 int plen;  
                 int type;                  int type;
                   u_int32_t seqnr;
   
                 if (mode == DISPATCH_BLOCK) {                  if (mode == DISPATCH_BLOCK) {
                         type = packet_read(&plen);                          type = packet_read_seqnr(&seqnr);
                 } else {                  } else {
                         type = packet_read_poll(&plen);                          type = packet_read_poll_seqnr(&seqnr);
                         if (type == SSH_MSG_NONE)                          if (type == SSH_MSG_NONE)
                                 return;                                  return;
                 }                  }
                 if (type > 0 && type < DISPATCH_MAX && dispatch[type] != NULL)                  if (type > 0 && type < DISPATCH_MAX && dispatch[type] != NULL)
                         (*dispatch[type])(type, plen, ctxt);                          (*dispatch[type])(type, seqnr, ctxt);
                 else                  else
                         packet_disconnect("protocol error: rcvd type %d", type);                          packet_disconnect("protocol error: rcvd type %d", type);
                 if (done != NULL && *done)                  if (done != NULL && *done)

Legend:
Removed from v.1.10.2.1  
changed lines
  Added in v.1.10.2.2