Bluez: removed outdated stuff so multithreaded bitbake doesn't break apps depending...
[vuplus_openembedded] / packages / gnutls / gnutls-1.4.0 / gnutls-openssl.patch
1 --- gnutls-1.3.5/libextra/gnutls_openssl.c.orig 2006-04-28 20:01:40.000000000 +0100
2 +++ gnutls-1.3.5/libextra/gnutls_openssl.c      2006-04-28 20:10:33.000000000 +0100
3 @@ -252,12 +252,17 @@
4    ssl->rfd = (gnutls_transport_ptr_t) - 1;
5    ssl->wfd = (gnutls_transport_ptr_t) - 1;
6  
7 +  ssl->ssl_peek_buffer = NULL;
8 +  ssl->ssl_peek_buffer_size = ssl->ssl_peek_avail = 0;
9 +
10    return ssl;
11  }
12  
13  void
14  SSL_free (SSL * ssl)
15  {
16 +  if (ssl->ssl_peek_buffer)
17 +    free(ssl->ssl_peek_buffer);
18    gnutls_certificate_free_credentials (ssl->gnutls_cred);
19    gnutls_deinit (ssl->gnutls_state);
20    free (ssl);
21 @@ -281,6 +286,7 @@
22  SSL_set_fd (SSL * ssl, int fd)
23  {
24    gnutls_transport_set_ptr (ssl->gnutls_state, (gnutls_transport_ptr_t) fd);
25 +  ssl->rfd = ssl->wfd = fd;
26    return 1;
27  }
28  
29 @@ -306,6 +312,17 @@
30    return 1;
31  }
32  
33 +int SSL_get_rfd(SSL *ssl)
34 +{
35 +  return ssl->rfd;
36 +}
37 +
38 +int SSL_get_wfd(SSL *ssl)
39 +{
40 +  return ssl->wfd;
41 +}
42 +
43 +
44  void
45  SSL_set_bio (SSL * ssl, BIO * rbio, BIO * wbio)
46  {
47 @@ -321,6 +338,8 @@
48  int
49  SSL_pending (SSL * ssl)
50  {
51 +  if (ssl->ssl_peek_avail)
52 +    return ssl->ssl_peek_avail;
53    return gnutls_record_check_pending (ssl->gnutls_state);
54  }
55  
56 @@ -476,11 +495,50 @@
57    return 1;
58  }
59  
60 +int SSL_peek(SSL *ssl, void *buf, int len)
61 +{
62 +  if (len > ssl->ssl_peek_buffer_size) {
63 +    ssl->ssl_peek_buffer = realloc (ssl->ssl_peek_buffer, len);
64 +    ssl->ssl_peek_buffer_size = len;
65 +  }
66 +
67 +  if (ssl->ssl_peek_avail == 0) {
68 +
69 +    int ret;
70 +    
71 +    ret = gnutls_record_recv(ssl->gnutls_state, ssl->ssl_peek_buffer, len);
72 +    ssl->last_error = ret;
73 +    
74 +    if (ret > 0)
75 +      ssl->ssl_peek_avail += ret;
76 +  }
77 +
78 +  if (len > ssl->ssl_peek_avail)
79 +    len = ssl->ssl_peek_avail;
80 +
81 +  memcpy (buf, ssl->ssl_peek_buffer, len);
82 +
83 +  return len;
84 +}
85 +
86  int
87  SSL_read (SSL * ssl, void *buf, int len)
88  {
89    int ret;
90  
91 +  if (ssl->ssl_peek_avail) {
92 +    int n = (ssl->ssl_peek_avail > len) ? len : ssl->ssl_peek_avail;
93 +
94 +    memcpy (buf, ssl->ssl_peek_buffer, n);
95 +
96 +    if (ssl->ssl_peek_avail > n)
97 +      memmove (ssl->ssl_peek_buffer, ssl->ssl_peek_buffer + n, ssl->ssl_peek_avail - n);
98 +
99 +    ssl->ssl_peek_avail -= n;
100 +
101 +    return n;
102 +  }
103 +
104    ret = gnutls_record_recv (ssl->gnutls_state, buf, len);
105    ssl->last_error = ret;
106  
107 --- gnutls-1.3.5/includes/gnutls/openssl.h.orig 2006-04-28 20:10:55.000000000 +0100
108 +++ gnutls-1.3.5/includes/gnutls/openssl.h      2006-04-28 20:11:52.000000000 +0100
109 @@ -164,6 +164,11 @@
110  
111      gnutls_transport_ptr_t rfd;
112      gnutls_transport_ptr_t wfd;
113 +
114 +    char *ssl_peek_buffer;
115 +    size_t ssl_peek_buffer_size;
116 +    size_t ssl_peek_avail;
117 +
118    };
119  
120  #define rbio gnutls_state