char *test_Server_adds() { int rc = 0; Server *srv = Server_create( bfromcstr("uuid"), bfromcstr("localhost"), bfromcstr("0.0.0.0"), 8080, bfromcstr("chroot"), bfromcstr("access_log"), bfromcstr("error_log"), bfromcstr("pid_file"), NULL, 0); mu_assert(srv != NULL, "Failed to make the server, something on 8090?"); Host *host = Host_create(bfromcstr("zedshaw.com"), bfromcstr("zedshaw.com")); mu_assert(host != NULL, "Failed to make host."); rc = Server_add_host(srv, host); mu_assert(rc == 0, "Failed to add host to server."); Server_set_default_host(srv, host); Host *zedshaw = Server_match_backend(srv, host->name); mu_assert(zedshaw == host, "Didn't get the right one back."); mu_assert(Server_match_backend(srv, bfromcstr("NOWAY")) == host, "Didn't fall back to default_host"); Server_destroy(srv); return NULL; }
int connection_route_request(Connection *conn) { Host *host = NULL; Route *route = NULL; bstring path = Request_path(conn->req); if(conn->req->host_name) { host = Server_match_backend(conn->server, conn->req->host_name); } else { host = conn->server->default_host; } error_unless(host, conn, 404, "Request for a host we don't have registered: %s", bdata(conn->req->host_name)); Backend *found = Host_match_backend(host, path, &route); error_unless(found, conn, 404, "Handler not found: %s", bdata(path)); Request_set_action(conn->req, found); conn->req->target_host = host; conn->req->pattern = route->pattern; conn->req->prefix = route->prefix; return Connection_backend_event(found, conn); error: return CLOSE; }
int connection_route_request(Connection *conn) { Host *host = NULL; Route *route = NULL; bstring path = Request_path(conn->req); check_debug(path != NULL, "No path given, in request, ignoring."); Server *server = Server_queue_latest(); check(server != NULL, "No server in the server queue, tell Zed."); if(conn->req->host_name) { host = Server_match_backend(server, conn->req->host_name); } else { host = server->default_host; } error_unless(host, conn, 404, "Request for a host we don't have registered: %s", bdata(conn->req->host_name)); Backend *found = Host_match_backend(host, path, &route); error_unless(found, conn, 404, "Handler not found: %s", bdata(path)); Request_set_action(conn->req, found); conn->req->target_host = host; conn->req->pattern = route->pattern; conn->req->prefix = route->prefix; return Connection_backend_event(found, conn); error: return CLOSE; }