Diff for /ansh/src/client3.c between versions 1.1.1.1.2.1 and 1.1.1.1.2.3

version 1.1.1.1.2.1, 2011/10/05 23:57:24 version 1.1.1.1.2.3, 2011/10/13 14:29:30
Line 27  SetRemoteWinz(int h, u_short id, struct sockaddr *sa,  Line 27  SetRemoteWinz(int h, u_short id, struct sockaddr *sa, 
         pos[1] = htons(ws.ws_col);          pos[1] = htons(ws.ws_col);
         pos[2] = htons(ws.ws_xpixel);          pos[2] = htons(ws.ws_xpixel);
         pos[3] = htons(ws.ws_ypixel);          pos[3] = htons(ws.ws_ypixel);
        if (icmpSend(h, id, ANSH_FLG_WINZ, buf, sizeof ws, sa, sizeof(struct sockaddr)) == -1)        if (icmpSend(h, 0, id, ANSH_FLG_WINZ, Crypted, buf, sizeof ws, sa, sizeof(struct sockaddr)) == -1)
                 return -1;                  return -1;
   
         return 0;          return 0;
Line 43  ConnectL3(int h, u_short id, struct sockaddr *sa, int  Line 43  ConnectL3(int h, u_short id, struct sockaddr *sa, int 
         u_short aid;          u_short aid;
         struct sockaddr s;          struct sockaddr s;
         char flg, nl = 0;          char flg, nl = 0;
        u_char *buf;        u_char *buf, *str;
         socklen_t sl;          socklen_t sl;
           u_int sq, Seq = 0;
   
         FTRACE(3);          FTRACE(3);
   
Line 68  ConnectL3(int h, u_short id, struct sockaddr *sa, int  Line 69  ConnectL3(int h, u_short id, struct sockaddr *sa, int 
                         ret = -1;                          ret = -1;
                         break;                          break;
                 }                  }
                if (FD_ISSET(STDIN_FILENO, &rfd)) {                if (FD_ISSET(h, &rfd)) {
                         sl = sizeof s;
                         rlen = len;
                         memset(buf, 0, rlen);
                         flg = icmpRecv(h, &sq, &aid, &Crypted, buf, &rlen, &s, &sl);
                         if (flg == ANSH_FLG_ERR) {
                                 ret = -1;
                                 break;
                         }
                         if (aid != id) {
                                 VERB(4) LOG("different service id %d / %d\n", aid, id);
                                 continue;
                         }
                         if (flg == ANSH_FLG_EOF) {
                                 VERB(3) LOG("receive EOF going down.\n");
                                 Kill++;
                         }
                         if (flg != ANSH_FLG_OK)
                                 continue;
                         if (sq <= Seq)
                                 continue;
                         else if (sq > (Seq + 1))
                                 VERB(1) LOG("LOST PACKET(s) detect: %d; received seq=%d - %d", 
                                                 sq - Seq + 1, sq, Seq);
                         Seq = sq;
 
                         if (Crypted) {
                                 str = cryptBuffer(buf, rlen, Crypted);
                                 if (str) {
                                         memcpy(buf, str, rlen);
                                         free(str);
                                 }
                         }
 
                         rlen = write(STDOUT_FILENO, buf, rlen);
                         if (rlen == -1) {
                                 printf("Error:: write(stdout) #%d - %s\n", errno, strerror(errno));
                                 ret = -1;
                                 break;
                         }
                 } else {
                         memset(buf, 0, len);                          memset(buf, 0, len);
                         rlen = read(STDIN_FILENO, buf, len);                          rlen = read(STDIN_FILENO, buf, len);
                         if (rlen == -1) {                          if (rlen == -1) {
Line 107  ConnectL3(int h, u_short id, struct sockaddr *sa, int  Line 148  ConnectL3(int h, u_short id, struct sockaddr *sa, int 
                         } else                          } else
                                 nl ^= nl;                                  nl ^= nl;
   
                        rlen = icmpSend(h, id, ANSH_FLG_CPOUT, buf, rlen, sa, sizeof(struct sockaddr));                        if (Crypted) {
                        if (rlen == ANSH_FLG_ERR) {                                str = cryptBuffer(buf, rlen, Crypted);
                                ret = -1;                                if (str) {
                                break;                                        memcpy(buf, str, rlen);
                                         free(str);
                                 }
                         }                          }
                } else {
                        sl = sizeof s;                        rlen = icmpSend(h, ++Seq, id, ANSH_FLG_CPOUT, Crypted, buf, rlen, sa, sizeof(struct sockaddr));
                        rlen = len;                        if (rlen == ANSH_FLG_ERR) {
                        memset(buf, 0, rlen); 
                        flg = icmpRecv(h, &aid, buf, &rlen, &s, &sl); 
                        if (flg == ANSH_FLG_ERR) { 
                                ret = -1; 
                                break; 
                        } 
                        if (aid != id) { 
                                VERB(4) LOG("different service id %d / %d\n", aid, id); 
                                continue; 
                        } 
                        if (flg == ANSH_FLG_EOF) { 
                                VERB(3) LOG("receive EOF going down.\n"); 
                                Kill++; 
                        } 
                        if (flg != ANSH_FLG_OK) 
                                continue; 
                        rlen = write(STDOUT_FILENO, buf, rlen); 
                        if (rlen == -1) { 
                                printf("Error:: write(stdout) #%d - %s\n", errno, strerror(errno)); 
                                 ret = -1;                                  ret = -1;
                                 break;                                  break;
                         }                          }

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


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