@@ -66,20 +66,24 @@ int mockConnect (uint32_t ipv4, int& sock, int port)
66
66
return 1 ;
67
67
}
68
68
69
- size_t mockFillInBuf (int sock, char * ccinbuf, size_t & ccinbufsize)
69
+ ssize_t mockFillInBuf (int sock, char * ccinbuf, size_t & ccinbufsize)
70
70
{
71
71
size_t maxread = CCBUFSIZE - ccinbufsize;
72
72
ssize_t ret = ::read (sock, ccinbuf + ccinbufsize, maxread);
73
73
if (ret == -1 )
74
74
{
75
75
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
+ }
77
80
ret = 0 ;
78
81
}
79
- return ccinbufsize += ret;
82
+ ccinbufsize += ret;
83
+ return ret;
80
84
}
81
85
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)
83
87
{
84
88
if (usersize > CCBUFSIZE)
85
89
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
96
100
}
97
101
98
102
// check incoming data data
99
- mockFillInBuf (sock, ccinbuf, ccinbufsize);
103
+ if (mockFillInBuf (sock, ccinbuf, ccinbufsize) < 0 )
104
+ return -1 ;
100
105
if (usersize <= ccinbufsize)
101
106
{
102
107
// data just received
@@ -113,16 +118,18 @@ size_t mockPeekBytes (int sock, char* dst, size_t usersize, int timeout_ms, char
113
118
return retsize;
114
119
}
115
120
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)
117
122
{
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 ;
119
126
// swallow (XXX use a circular buffer)
120
127
memmove (ccinbuf, ccinbuf + copied, ccinbufsize - copied);
121
128
ccinbufsize -= copied;
122
129
return copied;
123
130
}
124
131
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)
126
133
{
127
134
struct pollfd p;
128
135
p.fd = sock;
@@ -140,7 +147,7 @@ size_t mockWrite (int sock, const uint8_t* data, size_t size, int timeout_ms)
140
147
if (ret == -1 )
141
148
{
142
149
fprintf (stderr, MOCK " ClientContext::read: write(%d): %s\n " , sock, strerror (errno));
143
- return 0 ;
150
+ return - 1 ;
144
151
}
145
152
if (ret != (int )size)
146
153
{
0 commit comments