diff options
Diffstat (limited to 'packages/libetpan')
-rw-r--r-- | packages/libetpan/.mtn2git_empty | 0 | ||||
-rw-r--r-- | packages/libetpan/libetpan-0.36/.mtn2git_empty | 0 | ||||
-rw-r--r-- | packages/libetpan/libetpan-0.36/gnutls.patch | 214 | ||||
-rw-r--r-- | packages/libetpan/libetpan-0.36/reentrant.patch | 63 |
4 files changed, 277 insertions, 0 deletions
diff --git a/packages/libetpan/.mtn2git_empty b/packages/libetpan/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/libetpan/.mtn2git_empty diff --git a/packages/libetpan/libetpan-0.36/.mtn2git_empty b/packages/libetpan/libetpan-0.36/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/libetpan/libetpan-0.36/.mtn2git_empty diff --git a/packages/libetpan/libetpan-0.36/gnutls.patch b/packages/libetpan/libetpan-0.36/gnutls.patch index e69de29bb2..d2ccdcf9d0 100644 --- a/packages/libetpan/libetpan-0.36/gnutls.patch +++ b/packages/libetpan/libetpan-0.36/gnutls.patch @@ -0,0 +1,214 @@ + +# +# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher +# + +--- libetpan/src/Makefile.in~gnutls 2005-03-10 10:11:30.000000000 +0100 ++++ libetpan/src/Makefile.in 2005-03-11 21:43:10.975597607 +0100 +@@ -15,7 +15,7 @@ + + VERSINFO = @API_VERSION@ + CC = @CC@ +-LDFLAGS = @LIBS@ @SSLLIBS@ @LDFLAGS@ @DBLIB@ ++LDFLAGS = @LIBS@ @SSLLIBS@ @LDFLAGS@ @DBLIB@ @GNUTLSLIBS@ + + SUBLIBS = data-types/libdata-types.la \ + low-level/liblow-level.la \ +--- libetpan/src/data-types/mailstream_ssl.c~gnutls 2005-03-10 10:11:30.000000000 +0100 ++++ libetpan/src/data-types/mailstream_ssl.c 2005-03-11 21:44:56.373673788 +0100 +@@ -61,7 +61,12 @@ + /* mailstream_low, ssl */ + + #ifdef USE_SSL ++#ifndef USE_GNUTLS + #include <openssl/ssl.h> ++#else ++#include <errno.h> ++#include <gnutls/openssl.h> ++#endif + #ifdef LIBETPAN_REENTRANT + #include <pthread.h> + #endif +@@ -85,9 +90,9 @@ + #ifdef USE_SSL + static int mailstream_low_ssl_close(mailstream_low * s); + static ssize_t mailstream_low_ssl_read(mailstream_low * s, +- void * buf, size_t count); ++ void * buf, size_t count); + static ssize_t mailstream_low_ssl_write(mailstream_low * s, +- const void * buf, size_t count); ++ const void * buf, size_t count); + static void mailstream_low_ssl_free(mailstream_low * s); + static int mailstream_low_ssl_get_fd(mailstream_low * s); + +@@ -113,10 +118,10 @@ + SSL_CTX * tmp_ctx; + int fd_flags; + int old_fd_flags; +- ++ + #ifdef LIBETPAN_REENTRANT + pthread_mutex_lock(&ssl_lock); +-#endif ++#endif + if (!ssl_init_done) { + SSL_library_init(); + ssl_init_done = 1; +@@ -124,35 +129,37 @@ + #ifdef LIBETPAN_REENTRANT + pthread_mutex_unlock(&ssl_lock); + #endif +- ++ + tmp_ctx = SSL_CTX_new(TLSv1_client_method()); + if (tmp_ctx == NULL) + goto err; +- ++ + ssl_conn = (SSL *) SSL_new(tmp_ctx); + if (ssl_conn == NULL) + goto free_ctx; +- ++ + if (SSL_set_fd(ssl_conn, fd) == 0) + goto free_ssl_conn; +- ++ ++#ifndef USE_GNUTLS + SSL_set_read_ahead(ssl_conn, 1); +- ++#endif ++ + r = SSL_connect(ssl_conn); + if (r <= 0) + goto free_ssl_conn; +- ++ + fd_flags = fcntl(fd, F_GETFL, 0); + old_fd_flags = fd_flags; + fd_flags |= O_NDELAY; + r = fcntl(fd, F_SETFL, fd_flags); + if (r < 0) + goto free_ssl_conn; +- ++ + ssl_data = malloc(sizeof(* ssl_data)); + if (ssl_data == NULL) + goto reset_fd_flags; +- ++ + ssl_data->fd = fd; + ssl_data->ssl_conn = ssl_conn; + ssl_data->ssl_ctx = tmp_ctx; +@@ -241,52 +248,101 @@ + } + + static ssize_t mailstream_low_ssl_read(mailstream_low * s, +- void * buf, size_t count) ++ void * buf, size_t count) + { + struct mailstream_ssl_data * ssl_data; + int r; + + ssl_data = (struct mailstream_ssl_data *) s->data; +- ++ + while (1) { + int ssl_r; + fd_set fds_read; ++#ifndef USE_GNUTLS + struct timeval timeout; +- ++#else ++ fd_set fds_excp; ++ ++ { ++ struct timeval timeout2; ++ timeout2 = mailstream_network_delay; ++ ++ FD_ZERO(&fds_read); ++ FD_SET(ssl_data->fd, &fds_read); ++ FD_ZERO(&fds_excp); ++ FD_SET(ssl_data->fd, &fds_excp); ++ r = select(ssl_data->fd + 1, &fds_read, NULL, &fds_excp, &timeout2); ++ if (r==0) { ++ return -1; ++ } ++ if (FD_ISSET(ssl_data->fd, &fds_excp)) ++ return -1; ++ if (!FD_ISSET(ssl_data->fd, &fds_read)) ++ return 0; ++ } ++#endif + r = SSL_read(ssl_data->ssl_conn, buf, count); +- if (r > 0) ++ if (r > 0) { + return r; +- ++ } ++#ifdef USE_GNUTLS ++ if (errno!=EAGAIN&&errno!=EWOULDBLOCK) { ++ return r; ++ } ++#else + ssl_r = SSL_get_error(ssl_data->ssl_conn, r); + switch (ssl_r) { + case SSL_ERROR_NONE: + return r; +- ++ + case SSL_ERROR_ZERO_RETURN: + return r; +- ++ + case SSL_ERROR_WANT_READ: + timeout = mailstream_network_delay; +- ++ + FD_ZERO(&fds_read); + FD_SET(ssl_data->fd, &fds_read); + r = select(ssl_data->fd + 1, &fds_read, NULL, NULL, &timeout); + if (r == 0) + return -1; + break; +- ++ + default: + return r; + } ++#endif + } + } + + static ssize_t mailstream_low_ssl_write(mailstream_low * s, +- const void * buf, size_t count) ++ const void * buf, size_t count) + { + struct mailstream_ssl_data * ssl_data; + + ssl_data = (struct mailstream_ssl_data *) s->data; ++#ifdef USE_GNUTLS ++ { ++ fd_set fds_write; ++ fd_set fds_excp; ++ struct timeval timeout; ++ int r; ++ ++ timeout = mailstream_network_delay; ++ ++ FD_ZERO(&fds_write); ++ FD_SET(ssl_data->fd, &fds_write); ++ FD_ZERO(&fds_excp); ++ FD_SET(ssl_data->fd, &fds_excp); ++ r = select(ssl_data->fd + 1, NULL, &fds_write, &fds_excp, &timeout); ++ if (r == 0) ++ return -1; ++ if (FD_ISSET(ssl_data->fd, &fds_excp)) ++ return -1; ++ if (!FD_ISSET(ssl_data->fd, &fds_write)) ++ return 0; ++ } ++#endif + return SSL_write(ssl_data->ssl_conn, buf, count); + } + #endif diff --git a/packages/libetpan/libetpan-0.36/reentrant.patch b/packages/libetpan/libetpan-0.36/reentrant.patch index e69de29bb2..eaf1edfe22 100644 --- a/packages/libetpan/libetpan-0.36/reentrant.patch +++ b/packages/libetpan/libetpan-0.36/reentrant.patch @@ -0,0 +1,63 @@ + +# +# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher +# + +--- libetpan/src/data-types/mailsem.c~reentrant 2005-01-28 02:43:11.000000000 +0100 ++++ libetpan/src/data-types/mailsem.c 2005-03-10 14:32:31.717000768 +0100 +@@ -34,7 +34,9 @@ + */ + + #include "mailsem.h" ++#ifdef LIBETPAN_REENTRANT + #include <semaphore.h> ++#endif + #include <stdlib.h> + #include <stdio.h> + #include <sys/stat.h> +@@ -50,6 +52,7 @@ + + struct mailsem * mailsem_new(void) + { ++#ifdef LIBETPAN_REENTRANT + struct mailsem * sem; + int r; + +@@ -82,11 +85,13 @@ + return sem; + + err: ++#endif + return NULL; + } + + void mailsem_free(struct mailsem * sem) + { ++#ifdef LIBETPAN_REENTRANT + if (sem->sem_kind == SEMKIND_SEMOPEN) { + char name[SEMNAME_LEN]; + +@@ -101,14 +106,23 @@ + free(sem->sem_sem); + } + free(sem); ++#endif + } + + int mailsem_up(struct mailsem * sem) + { ++#ifdef LIBETPAN_REENTRANT + return sem_wait((sem_t *) sem->sem_sem); ++#else ++ return 0; ++#endif + } + + int mailsem_down(struct mailsem * sem) + { ++#ifdef LIBETPAN_REENTRANT + return sem_post((sem_t *) sem->sem_sem); ++#else ++ return 0; ++#endif + } |