The readyRead() signal indicates that some data has been received. It does not indicate that all data has been received and it is not re-emitted if you don't read all the available data unless new data is received. Are you sure you don't have all your data sitting in the buffer and are sitting there waiting for a new readyRead() that will never come?