equal
deleted
inserted
replaced
65 } |
65 } |
66 |
66 |
67 static void sock_gnutls_event_handler (int fd, short what, void *arg) |
67 static void sock_gnutls_event_handler (int fd, short what, void *arg) |
68 { |
68 { |
69 struct sock_gnutls *sock = arg; |
69 struct sock_gnutls *sock = arg; |
|
70 |
|
71 (void) fd; |
|
72 (void) what; |
70 |
73 |
71 // gnutls might be able to proceed now, so ask user to try what didn't work before now, using the mask given to |
74 // gnutls might be able to proceed now, so ask user to try what didn't work before now, using the mask given to |
72 // event_enable(). |
75 // event_enable(). |
73 sock_stream_invoke_callbacks(SOCK_GNUTLS_BASE(sock), sock->ev_mask); |
76 sock_stream_invoke_callbacks(SOCK_GNUTLS_BASE(sock), sock->ev_mask); |
74 } |
77 } |
124 |
127 |
125 /* |
128 /* |
126 * Our sock_stream_Type |
129 * Our sock_stream_Type |
127 */ |
130 */ |
128 struct sock_stream_type sock_gnutls_type = { |
131 struct sock_stream_type sock_gnutls_type = { |
129 .methods.read = &sock_gnutls_read, |
132 .methods = { |
130 .methods.write = &sock_gnutls_write, |
133 .read = &sock_gnutls_read, |
131 .methods.event_init = &sock_gnutls_event_init, |
134 .write = &sock_gnutls_write, |
132 .methods.event_enable = &sock_gnutls_event_enable, |
135 .event_init = &sock_gnutls_event_init, |
|
136 .event_enable = &sock_gnutls_event_enable, |
|
137 }, |
133 }; |
138 }; |
134 |
139 |
135 /* |
140 /* |
136 * XXX: global shared sock_gnutls_ctx |
141 * XXX: global shared sock_gnutls_ctx |
137 */ |
142 */ |
151 } |
156 } |
152 |
157 |
153 // XXX: log func |
158 // XXX: log func |
154 void _log (int level, const char *msg) |
159 void _log (int level, const char *msg) |
155 { |
160 { |
156 printf("gnutls: %s\n", msg); |
161 printf("gnutls: %d: %s", level, msg); |
157 } |
162 } |
158 |
163 |
159 err_t sock_gnutls_global_init (struct error_info *err) |
164 err_t sock_gnutls_global_init (struct error_info *err) |
160 { |
165 { |
161 // global init |
166 // global init |
202 // TCP connect |
207 // TCP connect |
203 if (sock_tcp_init_connect(SOCK_GNUTLS_TCP(sock), host, service)) |
208 if (sock_tcp_init_connect(SOCK_GNUTLS_TCP(sock), host, service)) |
204 JUMP_SET_ERROR_INFO(err, SOCK_GNUTLS_ERR(sock)); |
209 JUMP_SET_ERROR_INFO(err, SOCK_GNUTLS_ERR(sock)); |
205 |
210 |
206 // bind default transport functions (recv/send) to use the TCP fd |
211 // bind default transport functions (recv/send) to use the TCP fd |
207 gnutls_transport_set_ptr(sock->session, (gnutls_transport_ptr_t) sock->base_tcp.fd); |
212 gnutls_transport_set_ptr(sock->session, (gnutls_transport_ptr_t) (long int) sock->base_tcp.fd); |
208 |
213 |
209 // perform the handshake |
214 // perform the handshake |
210 if ((ERROR_EXTRA(err) = gnutls_handshake(sock->session)) < 0) |
215 if ((ERROR_EXTRA(err) = gnutls_handshake(sock->session)) < 0) |
211 JUMP_SET_ERROR(err, ERR_GNUTLS_HANDSHAKE); |
216 JUMP_SET_ERROR(err, ERR_GNUTLS_HANDSHAKE); |
212 |
217 |