added -e option to specify token expiration time
bug fix to socket function
This commit is contained in:
parent
94c94ca6de
commit
960fec20f8
@ -5,3 +5,4 @@
|
|||||||
|
|
||||||
extern char *server_root;
|
extern char *server_root;
|
||||||
extern bool silent_mode;
|
extern bool silent_mode;
|
||||||
|
extern int token_expiration_time;
|
||||||
|
14
src/main.c
14
src/main.c
@ -16,6 +16,7 @@
|
|||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
|
|
||||||
bool silent_mode = false;
|
bool silent_mode = false;
|
||||||
|
int token_expiration_time = 24 * 60 * 60; // default token expiration time is 1 day
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A non-concurrent, iterative server that serves one client at a time.
|
* A non-concurrent, iterative server that serves one client at a time.
|
||||||
@ -41,7 +42,12 @@ server_loop(char *port_string)
|
|||||||
static void
|
static void
|
||||||
usage(char * av0)
|
usage(char * av0)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Usage: %s [-p port] [-R rootdir] [-h]\n", av0);
|
fprintf(stderr, "Usage: %s [-p port] [-R rootdir] [-h] [-e seconds]\n"
|
||||||
|
" -p port port number to bind to\n"
|
||||||
|
" -R rootdir root directory from which to serve files\n"
|
||||||
|
" -e seconds expiration time for tokens in seconds\n"
|
||||||
|
" -h display this help\n"
|
||||||
|
, av0);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,12 +56,16 @@ main(int ac, char *av[])
|
|||||||
{
|
{
|
||||||
int opt;
|
int opt;
|
||||||
char *port_string = NULL;
|
char *port_string = NULL;
|
||||||
while ((opt = getopt(ac, av, "hp:R:s")) != -1) {
|
while ((opt = getopt(ac, av, "hp:R:se:")) != -1) {
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case 'p':
|
case 'p':
|
||||||
port_string = optarg;
|
port_string = optarg;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'e':
|
||||||
|
token_expiration_time = atoi(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
case 's':
|
case 's':
|
||||||
silent_mode = true;
|
silent_mode = true;
|
||||||
break;
|
break;
|
||||||
|
11
src/socket.c
11
src/socket.c
@ -114,9 +114,14 @@ socket_open_bind_listen(char * port_number_string, int backlog)
|
|||||||
int
|
int
|
||||||
socket_accept_client(int accepting_socket)
|
socket_accept_client(int accepting_socket)
|
||||||
{
|
{
|
||||||
struct sockaddr peer;
|
/* The address passed into accept must be large enough for either IPv4 & IPv6.
|
||||||
|
* Using a struct sockaddr is too small to hold a full IPv6 address and accept()
|
||||||
|
* would not return the full address.
|
||||||
|
*/
|
||||||
|
struct sockaddr_in6 peer;
|
||||||
socklen_t peersize = sizeof(peer);
|
socklen_t peersize = sizeof(peer);
|
||||||
int client = accept(accepting_socket, &peer, &peersize);
|
|
||||||
|
int client = accept(accepting_socket, (struct sockaddr *) &peer, &peersize);
|
||||||
if (client == -1) {
|
if (client == -1) {
|
||||||
perror("accept");
|
perror("accept");
|
||||||
return -1;
|
return -1;
|
||||||
@ -127,7 +132,7 @@ socket_accept_client(int accepting_socket)
|
|||||||
*/
|
*/
|
||||||
if (!silent_mode) {
|
if (!silent_mode) {
|
||||||
char peer_addr[1024], peer_port[10];
|
char peer_addr[1024], peer_port[10];
|
||||||
int rc = getnameinfo(&peer, peersize,
|
int rc = getnameinfo((struct sockaddr *) &peer, peersize,
|
||||||
peer_addr, sizeof peer_addr, peer_port, sizeof peer_port,
|
peer_addr, sizeof peer_addr, peer_port, sizeof peer_port,
|
||||||
NI_NUMERICHOST | NI_NUMERICSERV);
|
NI_NUMERICHOST | NI_NUMERICSERV);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user