File Conn_engine_core.c changed (mode: 100644) (index 7c6b482..a6b6899) |
... |
... |
int Conn_try_expand_buf(struct Conn *C, const int what, const int needed) |
255 |
255 |
char *p; |
char *p; |
256 |
256 |
unsigned int hm; |
unsigned int hm; |
257 |
257 |
unsigned int slot, old_size, amount, head, tail; |
unsigned int slot, old_size, amount, head, tail; |
|
258 |
|
unsigned int default_buf, buf_size, max_buf; |
|
259 |
|
char *pbuf; |
258 |
260 |
|
|
259 |
261 |
slot = C->slot; |
slot = C->slot; |
260 |
262 |
|
|
261 |
263 |
if (what == 0) { |
if (what == 0) { |
262 |
264 |
head = C->obuf_head; |
head = C->obuf_head; |
263 |
265 |
tail = C->obuf_tail; |
tail = C->obuf_tail; |
|
266 |
|
default_buf = Conn_default_obuf; |
|
267 |
|
old_size = Conns[slot].obuf_size; |
|
268 |
|
buf_size = Conns[slot].obuf_size; |
|
269 |
|
max_buf = Conn_max_obuf; |
|
270 |
|
pbuf = Conns[slot].obuf; |
264 |
271 |
} else { |
} else { |
265 |
272 |
head = C->ibuf_head; |
head = C->ibuf_head; |
266 |
273 |
tail = C->ibuf_tail; |
tail = C->ibuf_tail; |
|
274 |
|
default_buf = Conn_default_ibuf; |
|
275 |
|
old_size = Conns[slot].ibuf_size; |
|
276 |
|
buf_size = Conns[slot].ibuf_size; |
|
277 |
|
max_buf = Conn_max_ibuf; |
|
278 |
|
pbuf = Conns[slot].ibuf; |
267 |
279 |
} |
} |
268 |
280 |
|
|
269 |
281 |
Log(10, "\tTry to expand buffer on slot %u for [%s] needed=%d head=%u tail=%u.\n", |
Log(10, "\tTry to expand buffer on slot %u for [%s] needed=%d head=%u tail=%u.\n", |
|
... |
... |
int Conn_try_expand_buf(struct Conn *C, const int what, const int needed) |
271 |
283 |
head, tail); |
head, tail); |
272 |
284 |
|
|
273 |
285 |
amount = needed; |
amount = needed; |
|
286 |
|
if (amount < default_buf) |
|
287 |
|
amount = default_buf; |
|
288 |
|
|
|
289 |
|
hm = buf_size + amount; |
|
290 |
|
if (hm > max_buf) |
|
291 |
|
hm = max_buf; |
|
292 |
|
|
|
293 |
|
/* Seems we are not allowed to grow larger */ |
|
294 |
|
if (hm <= buf_size) |
|
295 |
|
return -1; |
|
296 |
|
|
|
297 |
|
p = realloc(pbuf, hm); |
|
298 |
|
if (p == NULL) { |
|
299 |
|
Log(3, "Cannot realloc obuf!\n"); |
|
300 |
|
return -1; |
|
301 |
|
} |
274 |
302 |
|
|
275 |
303 |
if (what == 0) { |
if (what == 0) { |
276 |
|
if (amount < Conn_default_obuf) |
|
277 |
|
amount = Conn_default_obuf; |
|
278 |
|
old_size = Conns[slot].obuf_size; |
|
279 |
|
hm = Conns[slot].obuf_size + amount; |
|
280 |
|
if (hm > Conn_max_obuf) |
|
281 |
|
hm = Conn_max_obuf; |
|
282 |
|
p = realloc(Conns[slot].obuf, hm); |
|
283 |
|
if (p == NULL) { |
|
284 |
|
Log(3, "Cannot realloc obuf!\n"); |
|
285 |
|
return -1; |
|
286 |
|
} |
|
287 |
304 |
Conns[slot].obuf = p; |
Conns[slot].obuf = p; |
288 |
305 |
Conns[slot].obuf_size = hm; |
Conns[slot].obuf_size = hm; |
289 |
|
Log(10, "\tSucces. Old/new size = %u/%u.\n", |
|
290 |
|
old_size, Conns[slot].obuf_size); |
|
291 |
306 |
} else { |
} else { |
292 |
|
if (amount < Conn_default_ibuf) |
|
293 |
|
amount = Conn_default_ibuf; |
|
294 |
|
old_size = Conns[slot].ibuf_size; |
|
295 |
|
hm = Conns[slot].ibuf_size + amount; |
|
296 |
|
if (hm > Conn_max_ibuf) |
|
297 |
|
hm = Conn_max_ibuf; |
|
298 |
|
p = realloc(Conns[slot].ibuf, hm); |
|
299 |
|
if (p == NULL) { |
|
300 |
|
Log(3, "Cannot realloc ibuf!\n"); |
|
301 |
|
return -1; |
|
302 |
|
} |
|
303 |
307 |
Conns[slot].ibuf = p; |
Conns[slot].ibuf = p; |
304 |
308 |
Conns[slot].ibuf_size = hm; |
Conns[slot].ibuf_size = hm; |
305 |
|
Log(10, "\tSucces. Old/new size = %u/%u.\n", |
|
306 |
|
old_size, Conns[slot].ibuf_size); |
|
307 |
309 |
} |
} |
|
310 |
|
Log(10, "\tSucces. Old/new size = %u/%u.\n", |
|
311 |
|
old_size, hm); |
308 |
312 |
|
|
309 |
313 |
return 0; |
return 0; |
310 |
314 |
} |
} |