diff options
| author | Uros Majstorovic <majstor@majstor.org> | 2024-05-10 19:49:06 +0200 | 
|---|---|---|
| committer | Uros Majstorovic <majstor@majstor.org> | 2024-05-10 19:49:06 +0200 | 
| commit | ce55165b6952f9325c34b0008b5116b16736c4cb (patch) | |
| tree | 7c85cb58e0eff3c9a884c499ad87ba6069dbc6ce /ecp/server/server.c | |
| parent | 3f814b6f30a9ae296805ebab49114fb24ab3b0d1 (diff) | |
server support for fragmented dir reply; fixed shadow reply messages accordingly
Diffstat (limited to 'ecp/server/server.c')
| -rw-r--r-- | ecp/server/server.c | 24 | 
1 files changed, 14 insertions, 10 deletions
diff --git a/ecp/server/server.c b/ecp/server/server.c index eeb5f2d..5493762 100644 --- a/ecp/server/server.c +++ b/ecp/server/server.c @@ -33,7 +33,7 @@ SRVConfig *srv_get_config(void) {  }  static void usage(char *arg) { -    fprintf(stderr, "Usage: %s <region> <capabilities> <private key> <addr> [ <dir acl> <vconn acl> ] [ <public key> <addr> ]\n", arg); +    fprintf(stderr, "Usage: %s <region> <roles> <private key> <addr> [ <dir acl> <vconn acl> ] [ <public key> <addr> ]\n", arg);      exit(1);  } @@ -55,7 +55,7 @@ static ECPConnection *conn_new(ECPSocket *sock, ECPConnection *parent, unsigned      switch (ctype) {          case CTYPE_DIR: { -            if (!(srv_config.capabilities & ECP_DIR_CAP_DIR)) return NULL; +            if (!(srv_config.roles & ECP_ROLE_DIR)) return NULL;              conn = malloc(sizeof(ECPConnection));              if (conn) { @@ -66,7 +66,7 @@ static ECPConnection *conn_new(ECPSocket *sock, ECPConnection *parent, unsigned          }          case ECP_CTYPE_DIR: { -            if (!(srv_config.capabilities & ECP_DIR_CAP_DIR)) return NULL; +            if (!(srv_config.roles & ECP_ROLE_DIR)) return NULL;              conn = malloc(sizeof(ECPConnection));              if (conn) ecp_conn_init(conn, sock, ctype); @@ -76,7 +76,7 @@ static ECPConnection *conn_new(ECPSocket *sock, ECPConnection *parent, unsigned          case ECP_CTYPE_VCONN: {              ECPVConnInb *_conn; -            if (!(srv_config.capabilities & ECP_DIR_CAP_VCONN)) return NULL; +            if (!(srv_config.roles & ECP_ROLE_VCONN)) return NULL;              _conn = malloc(sizeof(ECPVConnInb));              if (_conn) { @@ -87,7 +87,7 @@ static ECPConnection *conn_new(ECPSocket *sock, ECPConnection *parent, unsigned          }          case ECP_CTYPE_VLINK: { -            if (!(srv_config.capabilities & ECP_DIR_CAP_VCONN)) return NULL; +            if (!(srv_config.roles & ECP_ROLE_VCONN)) return NULL;              conn = malloc(sizeof(ECPConnection));              if (conn) ecp_vlink_init(conn, sock); @@ -116,8 +116,12 @@ static int key_check(ECPSocket *sock, ECPConnection *parent, unsigned char ctype              return 1;          } -        default: +        case ECP_CTYPE_DIR: +        case ECP_CTYPE_VCONN:              return 1; + +        default: +            return 0;      }  } @@ -174,11 +178,11 @@ int main(int argc, char *argv[]) {      if (srv_config.region >= MAX_REGION) fail("Bad region\n");      _argc++; -    srv_config.capabilities = (uint8_t)strtol(argv[_argc], &endptr, 16); -    if (endptr[0] != '\0') fail("Bad capabilities\n"); +    srv_config.roles = (uint8_t)strtol(argv[_argc], &endptr, 16); +    if (endptr[0] != '\0') fail("Bad roles\n");      _argc++; -    if (srv_config.capabilities & ECP_DIR_CAP_DIR) { +    if (srv_config.roles & ECP_ROLE_DIR) {          if (argc < 7) usage(argv[0]);      } else {          if (argc < 5) usage(argv[0]); @@ -213,7 +217,7 @@ int main(int argc, char *argv[]) {      rv = acl_init();      if (rv) fail("acl_init err:%d\n", rv); -    if (srv_config.capabilities & ECP_DIR_CAP_DIR) { +    if (srv_config.roles & ECP_ROLE_DIR) {          srv_config.acl_fn_dir = strdup(argv[_argc]);          _argc++;          srv_config.acl_fn = strdup(argv[_argc]);  | 
