{
unsigned char *x = va_arg(ap, unsigned char *);
SilcUInt32 len = va_arg(ap, SilcUInt32);
- MY_HAS_SPACE(dst, len);
- silc_buffer_put(dst, x, len);
- silc_buffer_pull(dst, len);
+ if (x && len) {
+ MY_HAS_SPACE(dst, len);
+ silc_buffer_put(dst, x, len);
+ silc_buffer_pull(dst, len);
+ }
break;
}
case SILC_BUFFER_PARAM_END:
if (src->len > 0) {
ret = write(fd, src->data, src->len);
if (ret < 0) {
- if (errno == EAGAIN) {
+ if (errno == EAGAIN || errno == EINTR) {
SILC_LOG_DEBUG(("Could not write immediately, will do it later"));
return -2;
}