Esempio n. 1
0
static ssize_t mailstream_low_ssl_write(mailstream_low * s,
					const void * buf, size_t count)
{
  struct mailstream_ssl_data * ssl_data;
  int r;
  
  ssl_data = (struct mailstream_ssl_data *) s->data;
  r = wait_write(s);
  if (r <= 0)
    return r;
  
  r = gnutls_record_send(ssl_data->session, buf, count);
  if (r > 0)
    return r;
  
  switch (r) {
  case 0:
    return -1;
    
  case GNUTLS_E_AGAIN:
  case GNUTLS_E_INTERRUPTED:
    return 0;
    
  default:
    return r;
  }
}
Esempio n. 2
0
static ssize_t mailstream_low_ssl_write(mailstream_low * s,
					const void * buf, size_t count)
{
  struct mailstream_ssl_data * ssl_data;
  int ssl_r;
  int r;
  
  ssl_data = (struct mailstream_ssl_data *) s->data;
  r = wait_write(s);
  if (r <= 0)
    return r;
  
  r = SSL_write(ssl_data->ssl_conn, buf, count);
  if (r > 0)
    return r;
  
  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 -1;
    
  case SSL_ERROR_WANT_WRITE:
    return 0;
    
  default:
    return r;
  }
}
Esempio n. 3
0
File: ps2.c Progetto: sjrct/Frosk
static void chg_config(uchar clr, uchar set)
{
	uchar old = get_config();
	outb(PS2_CMND, 0x60);
	do_assert(wait_write());
	outb(PS2_DATA, (old & ~clr) | set);
}
Esempio n. 4
0
File: ps2.c Progetto: sjrct/Frosk
static void ps2_command(uint port, uchar cmd, uchar * buf, int sz)
{
	int i;

	if (port) outb(PS2_CMND, 0xD4);

	do_assert(wait_write());
	outb(PS2_DATA, cmd);
	do_assert(wait_read());

	if (inb(PS2_DATA) != 0xFA) {
		assert(0);
	}

	if (buf != NULL) {
		for (i = 0; wait_read() && i < sz; i++) {
			buf[i] = inb(PS2_DATA);
		}
	}
}