| 1951 int pos = 0; |
1951 int pos = 0; |
| 1952 int pktlen; |
1952 int pktlen; |
| 1953 |
1953 |
| 1954 if (yd->rxlen < YAHOO_PACKET_HDRLEN) |
1954 if (yd->rxlen < YAHOO_PACKET_HDRLEN) |
| 1955 return; |
1955 return; |
| |
1956 |
| |
1957 if (strncmp(yd->rxqueue, "YMSG", MIN(4, yd->rxlen)) != 0) { |
| |
1958 /* HEY! This isn't even a YMSG packet. What |
| |
1959 * are you trying to pull? */ |
| |
1960 guchar *start; |
| |
1961 |
| |
1962 gaim_debug_warning("yahoo", "Error in YMSG stream, got something not a YMSG packet!"); |
| |
1963 |
| |
1964 start = memchr(yd->rxqueue, 'Y', yd->rxlen); |
| |
1965 if (start) { |
| |
1966 g_memmove(yd->rxqueue, start, yd->rxlen - (start - yd->rxqueue)); |
| |
1967 yd->rxlen -= start - yd->rxqueue; |
| |
1968 continue; |
| |
1969 } else { |
| |
1970 /* hmm this could screw up with just the Y, YM, or YMS is at the very |
| |
1971 end of the packet */ |
| |
1972 g_free(yd->rxqueue); |
| |
1973 yd->rxqueue = NULL; |
| |
1974 yd->rxlen = 0; |
| |
1975 return; |
| |
1976 } |
| |
1977 } |
| 1956 |
1978 |
| 1957 pos += 4; /* YMSG */ |
1979 pos += 4; /* YMSG */ |
| 1958 pos += 2; |
1980 pos += 2; |
| 1959 pos += 2; |
1981 pos += 2; |
| 1960 |
1982 |