libuhttpd: New callback: on_accept
Signed-off-by: Jianhui Zhao <jianhuizhao329@gmail.com>main
parent
f21e2001e1
commit
ddf6e8dd86
|
@ -24,6 +24,11 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <libubox/ulog.h>
|
#include <libubox/ulog.h>
|
||||||
|
|
||||||
|
static void on_accept(struct uh_client *cl)
|
||||||
|
{
|
||||||
|
ULOG_INFO("New connection from: %s:%d\n", cl->get_peer_addr(cl), cl->get_peer_port(cl));
|
||||||
|
}
|
||||||
|
|
||||||
static int on_request(struct uh_client *cl)
|
static int on_request(struct uh_client *cl)
|
||||||
{
|
{
|
||||||
const char *path = cl->get_path(cl);
|
const char *path = cl->get_path(cl);
|
||||||
|
@ -103,6 +108,7 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
ULOG_INFO("Listen on: %s *:%d\n", srv->ssl ? "https" : "http", port);
|
ULOG_INFO("Listen on: %s *:%d\n", srv->ssl ? "https" : "http", port);
|
||||||
|
|
||||||
|
srv->on_accept = on_accept;
|
||||||
srv->on_request = on_request;
|
srv->on_request = on_request;
|
||||||
|
|
||||||
uloop_run();
|
uloop_run();
|
||||||
|
|
|
@ -121,6 +121,11 @@ static inline const char *client_get_peer_addr(struct uh_client *cl)
|
||||||
return inet_ntoa(cl->peer_addr.sin_addr);
|
return inet_ntoa(cl->peer_addr.sin_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int client_get_peer_port(struct uh_client *cl)
|
||||||
|
{
|
||||||
|
return ntohs(cl->peer_addr.sin_port);
|
||||||
|
}
|
||||||
|
|
||||||
static inline const char *client_get_url(struct uh_client *cl)
|
static inline const char *client_get_url(struct uh_client *cl)
|
||||||
{
|
{
|
||||||
return kvlist_get(&cl->request.url, "url");
|
return kvlist_get(&cl->request.url, "url");
|
||||||
|
@ -625,6 +630,7 @@ void uh_accept_client(struct uh_server *srv, bool ssl)
|
||||||
cl->get_version = client_get_version;
|
cl->get_version = client_get_version;
|
||||||
cl->get_method = client_get_method;
|
cl->get_method = client_get_method;
|
||||||
cl->get_peer_addr = client_get_peer_addr;
|
cl->get_peer_addr = client_get_peer_addr;
|
||||||
|
cl->get_peer_port = client_get_peer_port;
|
||||||
cl->get_url = client_get_url;
|
cl->get_url = client_get_url;
|
||||||
cl->get_path = client_get_path;
|
cl->get_path = client_get_path;
|
||||||
cl->get_query = client_get_query;
|
cl->get_query = client_get_query;
|
||||||
|
@ -632,6 +638,9 @@ void uh_accept_client(struct uh_server *srv, bool ssl)
|
||||||
cl->get_header = client_get_header;
|
cl->get_header = client_get_header;
|
||||||
cl->get_body = client_get_body;
|
cl->get_body = client_get_body;
|
||||||
|
|
||||||
|
if (srv->on_accept)
|
||||||
|
srv->on_accept(cl);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
err:
|
err:
|
||||||
close(sfd);
|
close(sfd);
|
||||||
|
|
|
@ -120,6 +120,7 @@ struct uh_client {
|
||||||
const char *(*get_method)(struct uh_client *cl);
|
const char *(*get_method)(struct uh_client *cl);
|
||||||
const char *(*get_version)(struct uh_client *cl);
|
const char *(*get_version)(struct uh_client *cl);
|
||||||
const char *(*get_peer_addr)(struct uh_client *cl);
|
const char *(*get_peer_addr)(struct uh_client *cl);
|
||||||
|
int (*get_peer_port)(struct uh_client *cl);
|
||||||
const char *(*get_url)(struct uh_client *cl);
|
const char *(*get_url)(struct uh_client *cl);
|
||||||
const char *(*get_path)(struct uh_client *cl);
|
const char *(*get_path)(struct uh_client *cl);
|
||||||
const char *(*get_query)(struct uh_client *cl);
|
const char *(*get_query)(struct uh_client *cl);
|
||||||
|
|
|
@ -36,6 +36,7 @@ struct uh_server {
|
||||||
void (*set_index_file)(struct uh_server *srv, const char *index_file);
|
void (*set_index_file)(struct uh_server *srv, const char *index_file);
|
||||||
void (*on_error404)(struct uh_client *cl);
|
void (*on_error404)(struct uh_client *cl);
|
||||||
int (*on_request)(struct uh_client *cl);
|
int (*on_request)(struct uh_client *cl);
|
||||||
|
void (*on_accept)(struct uh_client *cl);
|
||||||
|
|
||||||
#if (UHTTPD_SSL_SUPPORT)
|
#if (UHTTPD_SSL_SUPPORT)
|
||||||
int (*ssl_init)(struct uh_server *srv, const char *key, const char *crt);
|
int (*ssl_init)(struct uh_server *srv, const char *key, const char *crt);
|
||||||
|
|
Loading…
Reference in New Issue