h@5B<3e@117D sxhhc@5B<3e@117DJ=Uhh @5B<3e@117DK~hh@5B<3e@117DM'Rhh|@5B<3e@117DOZ걪hh@;}@@1 y7DDVj#hh@;}@@1 y7D}1Phh>v@;}@@1 y7D7D ~Whh0)@;}@@1 7E7Dghh@;}@@1 7EH7EP7EX7E`7EhJh_LvsT>F%x+ASsnhD5jD006('K C1[tמB*h].?<(<Le<+ds$hJC>mE~ *O5WWBs6z@ǵ-)H\n+3Z#GR vI~ifM:k@E:xZyҧnjv~* BrUW СT (w@pPH%R'iw9χ$glzWp*+)3yVrM`sV9<$]v. &,ݕ_1 6X,p"AX9RR.W|K~^~&MU({ \8 2OhLdp_@w\AV'm{s\] .GA?7o@pnx%R林H|0dz_6 Q&8{_^`&3iE93-]8co{}rimK Q* mk.8kR== ?c^ٰwe vu-H^sn(Gj-) { xq(Yk==]$A"ZbSS0Gl2 d T;KRLH2DyspQBsal 8T s(j%_hNIB/ݨ_uEx6) -^U8Rʥw?PN| Hecpyg1ZRH}; z~;Ra!Kuٳ J79&kti&&&|ÈgU?j*{#Y(qIe^V@w7IobΔZ±I>)!ߵ@8Rf/:zOI4Pec0*|2Bp.+M,^bKJ#'k !'IS\x^OFaSB{}ha" i^",/ukr|U&6\YAj,4XLnL3qMP,TScf%n8AOs=aa1UY"\[y$ D1a~RbcO_Dj[W]f0h+86W&bĸBH;0>OL{&ik>. IHDRWIN_GETSEQ (zhdr[IHDR_REMOTE])); return TRUE; case NAK: /* We must resend the requested packet. */ { int iseq; char *zsend; size_t clen; ++cIremote_rejects; if (! ficheck_errors (qdaemon)) return FALSE; iseq = IHDRWIN_GETSEQ (zhdr[IHDR_LOCAL]); /* The timeout code will send a NAK for the packet the remote side wants. So we may see a NAK here for the packet we are about to send. */ if (iseq == iIsendseq || (iIremote_winsize > 0 && (CSEQDIFF (iseq, iIremote_ack) > iIremote_winsize || CSEQDIFF (iIsendseq, iseq) > iIremote_winsize))) { DEBUG_MESSAGE1 (DEBUG_PROTO | DEBUG_ABNORMAL, "fiprocess_packet: Ignoring out of order NAK %d", iseq); return TRUE; } DEBUG_MESSAGE1 (DEBUG_PROTO | DEBUG_ABNORMAL, "fiprocess_packet: Got NAK %d; resending packet", iseq); /* Update the received sequence number. */ zsend = azIsendbuffers[iseq] + CHDROFFSET; if (IHDRWIN_GETSEQ (zsend[IHDR_REMOTE]) != iIrecseq) { int iremote; iremote = IHDRWIN_GETCHAN (zsend[IHDR_REMOTE]); zsend[IHDR_REMOTE] = IHDRWIN_SET (iIrecseq, iremote); zsend[IHDR_CHECK] = IHDRCHECK_VAL (zsend); iIlocal_ack = iIrecseq; } ++cIresent_packets; clen = CHDRCON_GETBYTES (zsend[IHDR_CONTENTS1], zsend[IHDR_CONTENTS2]); return (*pfIsend) (qdaemon->qconn, zsend, CHDRLEN + clen + (clen > 0 ? CCKSUMLEN : 0), TRUE); } case SPOS: /* Set the file position. */ { char abpos[CCKSUMLEN]; const char *zpos; if (cfirst >= CCKSUMLEN) zpos = zfirst; else { memcpy (abpos, zfirst, (size_t) cfirst); memcpy (abpos + cfirst, zsecond, (size_t) (CCKSUMLEN - cfirst)); zpos = abpos; } iIrecpos = (long) ICKSUM_GET (zpos); DEBUG_MESSAGE1 (DEBUG_PROTO, "fiprocess_packet: Got SPOS %ld", iIrecpos); return TRUE; } case CLOSE: { boolean fexpected; fexpected = ! fLog_sighup || fIclosing; if (! fexpected) ulog (LOG_ERROR, "Received unexpected CLOSE packet"); else DEBUG_MESSAGE0 (DEBUG_PROTO, "fiprocess_packet: Got CLOSE packet"); fIclosing = TRUE; *pfexit = TRUE; return fexpected; } default: /* Just ignore unrecognized packet types, for future protocol enhancements. */ DEBUG_MESSAGE1 (DEBUG_PROTO, "fiprocess_packet: Got packet type %d", ttype); return TRUE; } /*NOTREACHED*/ }