X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fstream-ssl.c;h=e501b995da8edc77713e216f7cbe1eead07bc873;hb=c6782bb0f7c6cf7b09efe1b94d6bf40f89fe7ed6;hp=436dc7b265a389915506c8309db1ffc566948e3e;hpb=5e4641a147c3e450a56b199b9066f1af75c2f779;p=openvswitch diff --git a/lib/stream-ssl.c b/lib/stream-ssl.c index 436dc7b2..e501b995 100644 --- a/lib/stream-ssl.c +++ b/lib/stream-ssl.c @@ -549,7 +549,8 @@ ssl_recv(struct stream *stream, void *buffer, size_t n) if (error == SSL_ERROR_ZERO_RETURN) { return 0; } else { - return interpret_ssl_error("SSL_read", ret, error, &sslv->rx_want); + return -interpret_ssl_error("SSL_read", ret, error, + &sslv->rx_want); } } } @@ -597,7 +598,7 @@ ssl_send(struct stream *stream, const void *buffer, size_t n) struct ssl_stream *sslv = ssl_stream_cast(stream); if (sslv->txbuf) { - return EAGAIN; + return -EAGAIN; } else { int error; @@ -606,13 +607,13 @@ ssl_send(struct stream *stream, const void *buffer, size_t n) switch (error) { case 0: ssl_clear_txbuf(sslv); - return 0; + return n; case EAGAIN: leak_checker_claim(buffer); - return 0; + return n; default: sslv->txbuf = NULL; - return error; + return -error; } } } @@ -731,7 +732,7 @@ pssl_open(const char *name UNUSED, char *suffix, struct pstream **pstreamp) return retval; } - fd = inet_open_passive(SOCK_STREAM, suffix, OFP_SSL_PORT, NULL); + fd = inet_open_passive(SOCK_STREAM, suffix, OFP_SSL_PORT, &sin); if (fd < 0) { return -fd; }