[evolution-data-server/camel-socks-proxy] Make the SSL stream's stream_read() reusable internally
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server/camel-socks-proxy] Make the SSL stream's stream_read() reusable internally
- Date: Thu, 27 May 2010 01:24:50 +0000 (UTC)
commit 8c58698fb6d982c56ce559cddfe29168bba35e31
Author: Federico Mena Quintero <federico novell com>
Date: Wed May 26 19:58:35 2010 -0500
Make the SSL stream's stream_read() reusable internally
Signed-off-by: Federico Mena Quintero <federico novell com>
camel/camel-tcp-stream-ssl.c | 23 +++++++++++++++--------
1 files changed, 15 insertions(+), 8 deletions(-)
---
diff --git a/camel/camel-tcp-stream-ssl.c b/camel/camel-tcp-stream-ssl.c
index 3d3e1a8..b4ebae8 100644
--- a/camel/camel-tcp-stream-ssl.c
+++ b/camel/camel-tcp-stream-ssl.c
@@ -327,9 +327,8 @@ camel_tcp_stream_ssl_enable_ssl (CamelTcpStreamSSL *ssl)
}
static gssize
-stream_read (CamelStream *stream, gchar *buffer, gsize n)
+read_from_prfd (PRFileDesc *fd, gchar *buffer, gsize n)
{
- CamelTcpStreamSSL *tcp_stream_ssl = CAMEL_TCP_STREAM_SSL (stream);
PRFileDesc *cancel_fd;
gssize nread;
@@ -341,7 +340,7 @@ stream_read (CamelStream *stream, gchar *buffer, gsize n)
cancel_fd = camel_operation_cancel_prfd (NULL);
if (cancel_fd == NULL) {
do {
- nread = PR_Read (tcp_stream_ssl->priv->sockfd, buffer, n);
+ nread = PR_Read (fd, buffer, n);
if (nread == -1)
set_errno (PR_GetError ());
} while (nread == -1 && (PR_GetError () == PR_PENDING_INTERRUPT_ERROR ||
@@ -355,13 +354,13 @@ stream_read (CamelStream *stream, gchar *buffer, gsize n)
/* get O_NONBLOCK options */
sockopts.option = PR_SockOpt_Nonblocking;
- PR_GetSocketOption (tcp_stream_ssl->priv->sockfd, &sockopts);
+ PR_GetSocketOption (fd, &sockopts);
sockopts.option = PR_SockOpt_Nonblocking;
nonblock = sockopts.value.non_blocking;
sockopts.value.non_blocking = TRUE;
- PR_SetSocketOption (tcp_stream_ssl->priv->sockfd, &sockopts);
+ PR_SetSocketOption (fd, &sockopts);
- pollfds[0].fd = tcp_stream_ssl->priv->sockfd;
+ pollfds[0].fd = fd;
pollfds[0].in_flags = PR_POLL_READ;
pollfds[1].fd = cancel_fd;
pollfds[1].in_flags = PR_POLL_READ;
@@ -388,7 +387,7 @@ stream_read (CamelStream *stream, gchar *buffer, gsize n)
goto failed;
} else {
do {
- nread = PR_Read (tcp_stream_ssl->priv->sockfd, buffer, n);
+ nread = PR_Read (fd, buffer, n);
if (nread == -1)
set_errno (PR_GetError ());
} while (nread == -1 && PR_GetError () == PR_PENDING_INTERRUPT_ERROR);
@@ -402,7 +401,7 @@ stream_read (CamelStream *stream, gchar *buffer, gsize n)
error = errno;
sockopts.option = PR_SockOpt_Nonblocking;
sockopts.value.non_blocking = nonblock;
- PR_SetSocketOption (tcp_stream_ssl->priv->sockfd, &sockopts);
+ PR_SetSocketOption (fd, &sockopts);
errno = error;
}
@@ -410,6 +409,14 @@ stream_read (CamelStream *stream, gchar *buffer, gsize n)
}
static gssize
+stream_read (CamelStream *stream, gchar *buffer, gsize n)
+{
+ CamelTcpStreamSSL *ssl = CAMEL_TCP_STREAM_SSL (stream);
+
+ return read_from_prfd (ssl->priv->sockfd, buffer, n);
+}
+
+static gssize
write_to_prfd (PRFileDesc *fd, const gchar *buffer, gsize n)
{
gssize w, written = 0;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]