diff options
author | Andrew Tridgell <tridge@samba.org> | 2005-06-19 04:21:45 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:18:30 -0500 |
commit | 822498b7f536e4c4e552c524b14d6cb691ec5b62 (patch) | |
tree | 35b8a7423c7e2454e744e9283d9fa3cbccac6706 /source4/web_server/web_server.c | |
parent | e485e80b512f17aba0b6b1dd5acc3f738f4189c1 (diff) | |
download | samba-822498b7f536e4c4e552c524b14d6cb691ec5b62.tar.gz samba-822498b7f536e4c4e552c524b14d6cb691ec5b62.tar.bz2 samba-822498b7f536e4c4e552c524b14d6cb691ec5b62.zip |
r7744: converted the web server to use the lib/tls/ generic tls code
(This used to be commit 023fc567badba38b87895ea73515b2ce0b703a8c)
Diffstat (limited to 'source4/web_server/web_server.c')
-rw-r--r-- | source4/web_server/web_server.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/source4/web_server/web_server.c b/source4/web_server/web_server.c index faa30fc55f..e54c0b6e9f 100644 --- a/source4/web_server/web_server.c +++ b/source4/web_server/web_server.c @@ -26,6 +26,7 @@ #include "web_server/web_server.h" #include "lib/events/events.h" #include "system/filesys.h" +#include "lib/tls/tls.h" /* don't allow connections to hang around forever */ #define HTTP_TIMEOUT 30 @@ -68,7 +69,7 @@ static void websrv_recv(struct stream_connection *conn, uint16_t flags) DATA_BLOB b; /* not the most efficient http parser ever, but good enough for us */ - status = tls_socket_recv(web, buf, sizeof(buf), &nread); + status = tls_socket_recv(web->tls, buf, sizeof(buf), &nread); if (NT_STATUS_IS_ERR(status)) goto failed; if (!NT_STATUS_IS_OK(status)) return; @@ -128,7 +129,7 @@ static void websrv_send(struct stream_connection *conn, uint16_t flags) b.data += web->output.nsent; b.length -= web->output.nsent; - status = tls_socket_send(web, &b, &nsent); + status = tls_socket_send(web->tls, &b, &nsent); if (NT_STATUS_IS_ERR(status)) { stream_terminate_connection(web->conn, "socket_send: failed"); return; @@ -161,6 +162,8 @@ static void websrv_send(struct stream_connection *conn, uint16_t flags) if (web->output.content.length == web->output.nsent && web->output.fd == -1) { + talloc_free(web->tls); + web->tls = NULL; stream_terminate_connection(web->conn, NULL); } } @@ -171,8 +174,8 @@ static void websrv_send(struct stream_connection *conn, uint16_t flags) static void websrv_accept(struct stream_connection *conn) { struct task_server *task = talloc_get_type(conn->private, struct task_server); + struct esp_data *edata = talloc_get_type(task->private, struct esp_data); struct websrv_context *web; - NTSTATUS status; web = talloc_zero(conn, struct websrv_context); if (web == NULL) goto failed; @@ -187,8 +190,9 @@ static void websrv_accept(struct stream_connection *conn) timeval_current_ofs(HTTP_TIMEOUT, 0), websrv_timeout, web); - status = tls_init_connection(web); - if (!NT_STATUS_IS_OK(status)) goto failed; + web->tls = tls_init_server(edata->tls_params, conn->socket, + conn->event.fde, "GPHO"); + if (web->tls == NULL) goto failed; return; @@ -241,8 +245,6 @@ static void websrv_task_init(struct task_server *task) status = http_setup_esp(task); if (!NT_STATUS_IS_OK(status)) goto failed; - tls_initialise(task); - return; failed: |