comparison tcp.c @ 261:5f27f90ed496 libavformat

Fix a very nasty problem with extra bytes appearing in TCP data streams. Whenever there was an EINTR/EAGAIN return, then a byte in the data stream would be duplicated!! This fix should allow ffserver to work again.
author philipjsg
date Mon, 29 Sep 2003 01:41:30 +0000
parents b0771ae979e3
children 2f56d366a787
comparison
equal deleted inserted replaced
260:f3b8a6e60e71 261:5f27f90ed496
198 #ifdef __BEOS__ 198 #ifdef __BEOS__
199 ret = send(s->fd, buf, size, 0); 199 ret = send(s->fd, buf, size, 0);
200 #else 200 #else
201 ret = write(s->fd, buf, size); 201 ret = write(s->fd, buf, size);
202 #endif 202 #endif
203 if (ret < 0 && errno != EINTR && errno != EAGAIN) 203 if (ret < 0) {
204 #ifdef __BEOS__ 204 if (errno != EINTR && errno != EAGAIN) {
205 return errno; 205 #ifdef __BEOS__
206 #else 206 return errno;
207 return -errno; 207 #else
208 #endif 208 return -errno;
209 #endif
210 }
211 continue;
212 }
209 size -= ret; 213 size -= ret;
210 buf += ret; 214 buf += ret;
211 } 215 }
212 return size1 - size; 216 return size1 - size;
213 } 217 }