SOCKET fd = sock->sock;
SilcBuffer src = sock->outbuf;
+ if (!src)
+ return -2;
+ if (SILC_IS_DISABLED(sock))
+ return -1;
+
SILC_LOG_DEBUG(("Writing data to socket %d", fd));
if (src->len > 0) {
return -2;
}
SILC_LOG_ERROR(("Cannot write to socket: %d", (int)fd));
+ sock->sock_error = err;
return -1;
}
+ if (ret < src->len) {
+ SILC_LOG_DEBUG(("Wrote data %d of %d bytes, will write rest later",
+ ret, src->len));
+ silc_buffer_pull(src, ret);
+ return -2;
+ }
+
silc_buffer_pull(src, ret);
}
SOCKET fd = sock->sock;
int argp;
+ if (SILC_IS_DISABLED(sock))
+ return -1;
+
SILC_LOG_DEBUG(("Reading data from socket %d", fd));
/* Check whether there is data available, without calling recv(). */
return -2;
}
SILC_LOG_ERROR(("Cannot read from socket: %d", (int)fd));
+ sock->sock_error = err;
return -1;
}
return len;
}
+
+/* Returns human readable socket error message */
+
+bool silc_socket_get_error(SilcSocketConnection sock, char *error,
+ SilcUInt32 error_len)
+{
+ /* XXX TODO */
+ return FALSE;
+}