- st->ncerts = x509_certs.size();
- st->cert.x509 = &x509_certs[0];
- st->key.x509 = x509_key;
- st->deinit_all = 0;
-
- return 0;
-}
-
-static ssize_t gnutls_pull_wrapper(gnutls_transport_ptr_t user_wrap, void* buffer, size_t size)
-{
- StreamSocket* user = reinterpret_cast<StreamSocket*>(user_wrap);
- if (user->GetEventMask() & FD_READ_WILL_BLOCK)
- {
- errno = EAGAIN;
- return -1;
- }
- int rv = ServerInstance->SE->Recv(user, reinterpret_cast<char *>(buffer), size, 0);
- if (rv < 0)
- {
- /* On Windows we need to set errno for gnutls */
- if (SocketEngine::IgnoreError())
- errno = EAGAIN;
- }
- if (rv < (int)size)
- ServerInstance->SE->ChangeEventMask(user, FD_READ_WILL_BLOCK);
- return rv;
-}
-
-static ssize_t gnutls_push_wrapper(gnutls_transport_ptr_t user_wrap, const void* buffer, size_t size)
-{
- StreamSocket* user = reinterpret_cast<StreamSocket*>(user_wrap);
- if (user->GetEventMask() & FD_WRITE_WILL_BLOCK)
- {
- errno = EAGAIN;
- return -1;
- }
- int rv = ServerInstance->SE->Send(user, reinterpret_cast<const char *>(buffer), size, 0);
- if (rv < 0)
- {
- /* On Windows we need to set errno for gnutls */
- if (SocketEngine::IgnoreError())
- errno = EAGAIN;
- }
- if (rv < (int)size)
- ServerInstance->SE->ChangeEventMask(user, FD_WRITE_WILL_BLOCK);
- return rv;
-}