Diff for /ansh/src/daemon3.c between versions 1.1.1.1.2.1 and 1.1.1.1.2.4

version 1.1.1.1.2.1, 2011/10/07 13:41:26 version 1.1.1.1.2.4, 2011/10/13 14:29:30
Line 31  icmpTx(sched_task_t *task) Line 31  icmpTx(sched_task_t *task)
                 }                  }
         }          }
   
        if ((wlen = icmpSend(TASK_FD(task), proc->proc_id, proc->proc_flg, Crypted, proc->proc_buf_[FD2NET],         if ((wlen = icmpSend(TASK_FD(task), ++proc->proc_seq, proc->proc_id, proc->proc_flg, Crypted, 
                        proc->proc_rlen_[FD2NET], &proc->proc_cli, sizeof proc->proc_cli)) != ANSH_FLG_ERR) {                                        proc->proc_buf_[FD2NET], proc->proc_rlen_[FD2NET], &proc->proc_cli, 
                                         sizeof proc->proc_cli)) != ANSH_FLG_ERR) {
                 proc->proc_flg = ANSH_FLG_OK;                  proc->proc_flg = ANSH_FLG_OK;
                 proc->proc_rlen_[FD2NET] = 0;                  proc->proc_rlen_[FD2NET] = 0;
         }          }
Line 50  icmpRx(sched_task_t *task) Line 51  icmpRx(sched_task_t *task)
         struct tagProc *proc = NULL;          struct tagProc *proc = NULL;
         char ret;          char ret;
         u_short id, *b;          u_short id, *b;
           u_int seq;
   
         FTRACE(3);          FTRACE(3);
   
Line 57  icmpRx(sched_task_t *task) Line 59  icmpRx(sched_task_t *task)
         if (!(buf = malloc(rlen)))          if (!(buf = malloc(rlen)))
                 goto end;                  goto end;
   
        if ((ret = icmpRecv(TASK_FD(task), &id, &Crypted, buf, &rlen, &sa, (socklen_t *) &salen)) == ANSH_FLG_ERR)        if ((ret = icmpRecv(TASK_FD(task), &seq, &id, &Crypted, buf, &rlen, &sa, 
                                         (socklen_t *) &salen)) == ANSH_FLG_ERR)
                 goto end;                  goto end;
        VERB(5) LOG("Received %d bytes", rlen);        VERB(5) LOG("Received %d bytes %d", rlen, seq);
         if (!(ret & ANSH_FLG_CPOUT))          if (!(ret & ANSH_FLG_CPOUT))
                 goto end;                  goto end;
   
Line 86  icmpRx(sched_task_t *task) Line 89  icmpRx(sched_task_t *task)
         switch (ret) {          switch (ret) {
                 case ANSH_FLG_EOF:                  case ANSH_FLG_EOF:
                 case ANSH_FLG_CPOUT:                  case ANSH_FLG_CPOUT:
                           if (seq <= proc->proc_seq)
                                   goto end;
                           else if (seq > (proc->proc_seq + 1))
                                   LOG("LOST PACKET(s) detect: %d; received seq=%d - %d", 
                                                   seq - proc->proc_seq + 1, seq, proc->proc_seq);
                           proc->proc_seq = seq;
                         break;                          break;
                 case ANSH_FLG_WINZ:                  case ANSH_FLG_WINZ:
                         b = (u_short*) buf;                          b = (u_short*) buf;
Line 132  fdTx(sched_task_t *task) Line 141  fdTx(sched_task_t *task)
                 schedCancelby(TASK_ROOT(task), NULL, CRITERIA_FD, (void*) TASK_FD(task), NULL);                  schedCancelby(TASK_ROOT(task), NULL, CRITERIA_FD, (void*) TASK_FD(task), NULL);
   
                 proc->proc_pid = 0;                  proc->proc_pid = 0;
                   proc->proc_seq = 0;
                 proc->proc_flg = ANSH_FLG_EOF;                  proc->proc_flg = ANSH_FLG_EOF;
                 proc->proc_rlen_[FD2NET] = 0;                  proc->proc_rlen_[FD2NET] = 0;
   
Line 153  fdTx(sched_task_t *task) Line 163  fdTx(sched_task_t *task)
                         schedCancelby(TASK_ROOT(task), NULL, CRITERIA_FD, (void*) TASK_FD(task), NULL);                          schedCancelby(TASK_ROOT(task), NULL, CRITERIA_FD, (void*) TASK_FD(task), NULL);
   
                         proc->proc_pid = 0;                          proc->proc_pid = 0;
                           proc->proc_seq = 0;
                         proc->proc_flg = ANSH_FLG_EOF;                          proc->proc_flg = ANSH_FLG_EOF;
                         proc->proc_rlen_[FD2NET] = 0;                          proc->proc_rlen_[FD2NET] = 0;
   
Line 192  fdRx(sched_task_t *task) Line 203  fdRx(sched_task_t *task)
                 schedCancelby(TASK_ROOT(task), NULL, CRITERIA_FD, (void*) TASK_FD(task), NULL);                  schedCancelby(TASK_ROOT(task), NULL, CRITERIA_FD, (void*) TASK_FD(task), NULL);
   
                 proc->proc_pid = 0;                  proc->proc_pid = 0;
                   proc->proc_seq = 0;
                 proc->proc_flg = ANSH_FLG_EOF;                  proc->proc_flg = ANSH_FLG_EOF;
                 proc->proc_rlen_[FD2NET] = 0;                  proc->proc_rlen_[FD2NET] = 0;
   
Line 204  fdRx(sched_task_t *task) Line 216  fdRx(sched_task_t *task)
                 schedCancelby(TASK_ROOT(task), &TASK_ROOT(task)->root_timer, CRITERIA_CALL, TOfunc, NULL);                  schedCancelby(TASK_ROOT(task), &TASK_ROOT(task)->root_timer, CRITERIA_CALL, TOfunc, NULL);
   
         memset(proc->proc_buf_[FD2NET], 0, proc->proc_blen);          memset(proc->proc_buf_[FD2NET], 0, proc->proc_blen);
        rlen = read(TASK_FD(task), proc->proc_buf_[FD2NET], proc->proc_blen);        rlen = read(TASK_FD(task), proc->proc_buf_[FD2NET], 
                         proc->proc_blen - sizeof(struct icmp) + sizeof(struct ansh_hdr));
         switch (rlen) {          switch (rlen) {
                 case -1:                  case -1:
                         ERR("readtty #%d - %s", errno, strerror(errno));                          ERR("readtty #%d - %s", errno, strerror(errno));
Line 216  fdRx(sched_task_t *task) Line 229  fdRx(sched_task_t *task)
                         VERB(3) LOG("EOF process status %d", rlen);                          VERB(3) LOG("EOF process status %d", rlen);
   
                         proc->proc_pid = 0;                          proc->proc_pid = 0;
                           proc->proc_seq = 0;
                         proc->proc_flg = ANSH_FLG_EOF;                          proc->proc_flg = ANSH_FLG_EOF;
                         proc->proc_rlen_[FD2NET] = 0;                          proc->proc_rlen_[FD2NET] = 0;
   
Line 263  spawnLogin(sched_task_t *task, struct tagProc *proc) Line 277  spawnLogin(sched_task_t *task, struct tagProc *proc)
                         if (proc->proc_cli.sa_family == AF_INET) {                          if (proc->proc_cli.sa_family == AF_INET) {
                                 sin = (struct sockaddr_in*) &proc->proc_cli;                                  sin = (struct sockaddr_in*) &proc->proc_cli;
                                 inet_ntop(AF_INET, &sin->sin_addr, str + 8, INET_ADDRSTRLEN);                                  inet_ntop(AF_INET, &sin->sin_addr, str + 8, INET_ADDRSTRLEN);
                        } else if (proc->proc_cli.sa_family == AF_INET) {                        } else if (proc->proc_cli.sa_family == AF_INET6) {
                                 sin6 = (struct sockaddr_in6*) &proc->proc_cli;                                  sin6 = (struct sockaddr_in6*) &proc->proc_cli;
                                 inet_ntop(AF_INET6, &sin6->sin6_addr, str + 8, INET6_ADDRSTRLEN);                                  inet_ntop(AF_INET6, &sin6->sin6_addr, str + 8, INET6_ADDRSTRLEN);
                         }                          }

Removed from v.1.1.1.1.2.1  
changed lines
  Added in v.1.1.1.1.2.4


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