--- src/data/socket_file.cc.orig 2008-02-06 13:42:49.000000000 +0100 +++ src/data/socket_file.cc 2008-02-06 13:46:25.000000000 +0100 @@ -134,6 +134,16 @@ if (!is_open()) throw internal_error("SocketFile::set_size() called on a closed file"); + #define CHUNK_SIZE 4096 + int i, w; + char block[CHUNK_SIZE] = {0}; + + for (i=0, w=0; i < size; i += w) { + w = write(m_fd, block, CHUNK_SIZE); + if (w == -1) + throw internal_error("SocketFile::write() failed"); + } + if (ftruncate(m_fd, size) == 0) return true;