Skip to content

Commit 870a075

Browse files
committed
fix: Add compatibility with Mbed TLS 3.0.0
sync github.com/zhaojh329/ssl Signed-off-by: Jianhui Zhao <[email protected]>
1 parent 69fbd88 commit 870a075

File tree

4 files changed

+21
-16
lines changed

4 files changed

+21
-16
lines changed

src/http.c

+6-6
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,11 @@ static int ssl_negotiated(struct http_connection *conn)
8787
int ret;
8888

8989
ret = ssl_connect(conn->ssl, NULL, NULL);
90-
if (ret == SSL_PENDING)
90+
if (ret == SSL_WANT_READ || ret == SSL_WANT_WRITE)
9191
return 0;
9292

9393
if (ret == SSL_ERROR) {
94-
log_err("ssl connect error: %s\n", ssl_last_error_string(err_buf, sizeof(err_buf)));
94+
log_err("ssl connect error: %s\n", ssl_last_error_string(conn->ssl, err_buf, sizeof(err_buf)));
9595
return -1;
9696
}
9797

@@ -121,10 +121,10 @@ static void on_net_read(struct ev_loop *loop, struct ev_io *w, int revents)
121121

122122
ret = ssl_read(conn->ssl, buf, sizeof(buf));
123123
if (ret == SSL_ERROR) {
124-
log_err("ssl_read: %s\n", ssl_last_error_string(err_buf, sizeof(err_buf)));
124+
log_err("ssl_read: %s\n", ssl_last_error_string(conn->ssl, err_buf, sizeof(err_buf)));
125125
goto done;
126126
}
127-
if (ret == SSL_PENDING)
127+
if (ret == SSL_WANT_READ || ret == SSL_WANT_WRITE)
128128
return;
129129

130130
} else {
@@ -164,11 +164,11 @@ static void on_net_write(struct ev_loop *loop, struct ev_io *w, int revents)
164164

165165
ret = ssl_write(conn->ssl, buffer_data(b), buffer_length(b));
166166
if (ret == SSL_ERROR) {
167-
log_err("ssl_write: %s\n", ssl_last_error_string(err_buf, sizeof(err_buf)));
167+
log_err("ssl_write: %s\n", ssl_last_error_string(conn->ssl, err_buf, sizeof(err_buf)));
168168
goto err;
169169
}
170170

171-
if (ret == SSL_PENDING)
171+
if (ret == SSL_WANT_READ || ret == SSL_WANT_WRITE)
172172
return;
173173

174174
buffer_pull(b, NULL, ret);

src/main.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ static void load_default_ca_cert(struct ssl_context *ctx)
4444
glob("/etc/ssl/certs/*.crt", 0, NULL, &gl);
4545

4646
for (i = 0; i < gl.gl_pathc; i++)
47-
ssl_load_ca_crt_file(ctx, gl.gl_pathv[i]);
47+
ssl_load_ca_cert_file(ctx, gl.gl_pathv[i]);
4848

4949
globfree(&gl);
5050
}
@@ -163,7 +163,7 @@ int main(int argc, char **argv)
163163
rtty.ssl_on = true;
164164
break;
165165
case 'C':
166-
if (ssl_load_ca_crt_file(rtty.ssl_ctx, optarg)) {
166+
if (ssl_load_ca_cert_file(rtty.ssl_ctx, optarg)) {
167167
log_err("load ca certificate file fail\n");
168168
return -1;
169169
}
@@ -174,7 +174,7 @@ int main(int argc, char **argv)
174174
ssl_set_require_validation(rtty.ssl_ctx, false);
175175
break;
176176
case 'c':
177-
if (ssl_load_crt_file(rtty.ssl_ctx, optarg)) {
177+
if (ssl_load_cert_file(rtty.ssl_ctx, optarg)) {
178178
log_err("load certificate file fail\n");
179179
return -1;
180180
}

src/rtty.c

+11-6
Original file line numberDiff line numberDiff line change
@@ -480,11 +480,16 @@ static int ssl_negotiated(struct rtty *rtty)
480480
int ret;
481481

482482
ret = ssl_connect(rtty->ssl, on_ssl_verify_error, &valid_cert);
483-
if (ret == SSL_PENDING)
483+
if (ret == SSL_WANT_READ)
484484
return 0;
485485

486+
if (ret == SSL_WANT_WRITE) {
487+
ev_io_start(rtty->loop, &rtty->iow);
488+
return 0;
489+
}
490+
486491
if (ret == SSL_ERROR) {
487-
log_err("ssl connect error: %s\n", ssl_last_error_string(err_buf, sizeof(err_buf)));
492+
log_err("ssl connect error: %s\n", ssl_last_error_string(rtty->ssl, err_buf, sizeof(err_buf)));
488493
return -1;
489494
}
490495

@@ -504,11 +509,11 @@ static int rtty_ssl_read(int fd, void *buf, size_t count, void *arg)
504509

505510
ret = ssl_read(rtty->ssl, buf, count);
506511
if (ret == SSL_ERROR) {
507-
log_err("ssl_read: %s\n", ssl_last_error_string(err_buf, sizeof(err_buf)));
512+
log_err("ssl_read: %s\n", ssl_last_error_string(rtty->ssl, err_buf, sizeof(err_buf)));
508513
return P_FD_ERR;
509514
}
510515

511-
if (ret == SSL_PENDING)
516+
if (ret == SSL_WANT_READ || ret == SSL_WANT_WRITE)
512517
return P_FD_PENDING;
513518

514519
return ret;
@@ -580,11 +585,11 @@ static void on_net_write(struct ev_loop *loop, struct ev_io *w, int revents)
580585

581586
ret = ssl_write(rtty->ssl, buffer_data(b), buffer_length(b));
582587
if (ret == SSL_ERROR) {
583-
log_err("ssl_write: %s\n", ssl_last_error_string(err_buf, sizeof(err_buf)));
588+
log_err("ssl_write: %s\n", ssl_last_error_string(rtty->ssl, err_buf, sizeof(err_buf)));
584589
goto err;
585590
}
586591

587-
if (ret == SSL_PENDING)
592+
if (ret == SSL_WANT_READ || ret == SSL_WANT_WRITE)
588593
return;
589594

590595
buffer_pull(b, NULL, ret);

0 commit comments

Comments
 (0)