--- c:\sources\curl-7.16.2\lib/multi.c 2007-06-21 16:48:32.622025600 -0400 +++ ./multi.c 2007-06-21 15:42:14.086676100 -0400 @@ -1359,7 +1359,7 @@ } } - } while (easy->easy_handle->change.url_changed); + } while (0); if ((CURLM_STATE_COMPLETED == easy->state) && !easy->msg) { if(easy->easy_handle->dns.hostcachetype == HCACHE_MULTI) { --- c:\sources\curl-7.16.2\lib/transfer.c 2007-06-21 14:53:58.324866600 -0400 +++ ./transfer.c 2007-06-21 20:30:43.358113600 -0400 @@ -342,7 +342,7 @@ the stream was rewound (in which case we have data in a buffer) */ if((k->keepon & KEEP_READ) && - ((select_res & CSELECT_IN) || conn->bits.stream_was_rewound)) { + ((select_res & CSELECT_IN) || conn->bits.stream_was_rewound) || data_pending(conn)) { /* read */ bool is_empty_data = FALSE; @@ -1344,7 +1344,7 @@ k->keepon &= ~KEEP_READ; } - } while(data_pending(conn)); + } while(0); } /* if( read from socket ) */