@@ -66,20 +66,24 @@ int mockConnect (uint32_t ipv4, int& sock, int port)
6666 return 1 ;
6767}
6868
69- size_t mockFillInBuf (int sock, char * ccinbuf, size_t & ccinbufsize)
69+ ssize_t mockFillInBuf (int sock, char * ccinbuf, size_t & ccinbufsize)
7070{
7171 size_t maxread = CCBUFSIZE - ccinbufsize;
7272 ssize_t ret = ::read (sock, ccinbuf + ccinbufsize, maxread);
7373 if (ret == -1 )
7474 {
7575 if (errno != EAGAIN)
76- fprintf (stderr, MOCK " ClientContext::(read/peek): filling buffer for %zd bytes: %s\n " , maxread, strerror (errno));
76+ {
77+ fprintf (stderr, MOCK " ClientContext::(read/peek fd=%i): filling buffer for %zd bytes: %s\n " , sock, maxread, strerror (errno));
78+ return -1 ;
79+ }
7780 ret = 0 ;
7881 }
79- return ccinbufsize += ret;
82+ ccinbufsize += ret;
83+ return ret;
8084}
8185
82- size_t mockPeekBytes (int sock, char * dst, size_t usersize, int timeout_ms, char * ccinbuf, size_t & ccinbufsize)
86+ ssize_t mockPeekBytes (int sock, char * dst, size_t usersize, int timeout_ms, char * ccinbuf, size_t & ccinbufsize)
8387{
8488 if (usersize > CCBUFSIZE)
8589 fprintf (stderr, MOCK " CCBUFSIZE(%d) should be increased by %zd bytes (-> %zd)\n " , CCBUFSIZE, usersize - CCBUFSIZE, usersize);
@@ -96,7 +100,8 @@ size_t mockPeekBytes (int sock, char* dst, size_t usersize, int timeout_ms, char
96100 }
97101
98102 // check incoming data data
99- mockFillInBuf (sock, ccinbuf, ccinbufsize);
103+ if (mockFillInBuf (sock, ccinbuf, ccinbufsize) < 0 )
104+ return -1 ;
100105 if (usersize <= ccinbufsize)
101106 {
102107 // data just received
@@ -113,16 +118,18 @@ size_t mockPeekBytes (int sock, char* dst, size_t usersize, int timeout_ms, char
113118 return retsize;
114119}
115120
116- size_t mockRead (int sock, char * dst, size_t size, int timeout_ms, char * ccinbuf, size_t & ccinbufsize)
121+ ssize_t mockRead (int sock, char * dst, size_t size, int timeout_ms, char * ccinbuf, size_t & ccinbufsize)
117122{
118- size_t copied = mockPeekBytes (sock, dst, size, timeout_ms, ccinbuf, ccinbufsize);
123+ ssize_t copied = mockPeekBytes (sock, dst, size, timeout_ms, ccinbuf, ccinbufsize);
124+ if (copied < 0 )
125+ return -1 ;
119126 // swallow (XXX use a circular buffer)
120127 memmove (ccinbuf, ccinbuf + copied, ccinbufsize - copied);
121128 ccinbufsize -= copied;
122129 return copied;
123130}
124131
125- size_t mockWrite (int sock, const uint8_t * data, size_t size, int timeout_ms)
132+ ssize_t mockWrite (int sock, const uint8_t * data, size_t size, int timeout_ms)
126133{
127134 struct pollfd p;
128135 p.fd = sock;
@@ -140,7 +147,7 @@ size_t mockWrite (int sock, const uint8_t* data, size_t size, int timeout_ms)
140147 if (ret == -1 )
141148 {
142149 fprintf (stderr, MOCK " ClientContext::read: write(%d): %s\n " , sock, strerror (errno));
143- return 0 ;
150+ return - 1 ;
144151 }
145152 if (ret != (int )size)
146153 {
0 commit comments