1 Index: gnutls-1.6.0/libextra/gnutls_openssl.c
2 ===================================================================
3 --- gnutls-1.6.0.orig/libextra/gnutls_openssl.c 2006-08-13 22:34:09.000000000 +0200
4 +++ gnutls-1.6.0/libextra/gnutls_openssl.c 2006-12-12 15:07:59.002227000 +0100
6 ssl->rfd = (gnutls_transport_ptr_t) - 1;
7 ssl->wfd = (gnutls_transport_ptr_t) - 1;
9 + ssl->ssl_peek_buffer = NULL;
10 + ssl->ssl_peek_buffer_size = ssl->ssl_peek_avail = 0;
18 + if (ssl->ssl_peek_buffer)
19 + free(ssl->ssl_peek_buffer);
20 gnutls_certificate_free_credentials (ssl->gnutls_cred);
21 gnutls_deinit (ssl->gnutls_state);
24 SSL_set_fd (SSL * ssl, int fd)
26 gnutls_transport_set_ptr (ssl->gnutls_state, GNUTLS_INT_TO_POINTER (fd));
27 + ssl->rfd = ssl->wfd = fd;
35 +int SSL_get_rfd(SSL *ssl)
40 +int SSL_get_wfd(SSL *ssl)
47 SSL_set_bio (SSL * ssl, BIO * rbio, BIO * wbio)
51 SSL_pending (SSL * ssl)
53 + if (ssl->ssl_peek_avail)
54 + return ssl->ssl_peek_avail;
55 return gnutls_record_check_pending (ssl->gnutls_state);
62 +int SSL_peek(SSL *ssl, void *buf, int len)
64 + if (len > ssl->ssl_peek_buffer_size) {
65 + ssl->ssl_peek_buffer = realloc (ssl->ssl_peek_buffer, len);
66 + ssl->ssl_peek_buffer_size = len;
69 + if (ssl->ssl_peek_avail == 0) {
73 + ret = gnutls_record_recv(ssl->gnutls_state, ssl->ssl_peek_buffer, len);
74 + ssl->last_error = ret;
77 + ssl->ssl_peek_avail += ret;
80 + if (len > ssl->ssl_peek_avail)
81 + len = ssl->ssl_peek_avail;
83 + memcpy (buf, ssl->ssl_peek_buffer, len);
89 SSL_read (SSL * ssl, void *buf, int len)
93 + if (ssl->ssl_peek_avail) {
94 + int n = (ssl->ssl_peek_avail > len) ? len : ssl->ssl_peek_avail;
96 + memcpy (buf, ssl->ssl_peek_buffer, n);
98 + if (ssl->ssl_peek_avail > n)
99 + memmove (ssl->ssl_peek_buffer, ssl->ssl_peek_buffer + n, ssl->ssl_peek_avail - n);
101 + ssl->ssl_peek_avail -= n;
106 ret = gnutls_record_recv (ssl->gnutls_state, buf, len);
107 ssl->last_error = ret;
109 Index: gnutls-1.6.0/includes/gnutls/openssl.h
110 ===================================================================
111 --- gnutls-1.6.0.orig/includes/gnutls/openssl.h 2006-03-08 11:44:58.000000000 +0100
112 +++ gnutls-1.6.0/includes/gnutls/openssl.h 2006-12-12 15:07:26.032227000 +0100
115 gnutls_transport_ptr_t rfd;
116 gnutls_transport_ptr_t wfd;
118 + char *ssl_peek_buffer;
119 + size_t ssl_peek_buffer_size;
120 + size_t ssl_peek_avail;
124 #define rbio gnutls_state