Mercurial > libavformat.hg
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 } |