diff options
Diffstat (limited to 'ecp/src/ecp/core.c')
| -rw-r--r-- | ecp/src/ecp/core.c | 28 | 
1 files changed, 19 insertions, 9 deletions
| diff --git a/ecp/src/ecp/core.c b/ecp/src/ecp/core.c index 1ba042d..3d4342d 100644 --- a/ecp/src/ecp/core.c +++ b/ecp/src/ecp/core.c @@ -202,11 +202,14 @@ static int conn_table_insert(ECPConnection *conn) {              }          }      } -#else + +#else   /* ECP_WITH_HTABLE */ +      if (sock->conn_table.size == ECP_MAX_SOCK_CONN) return ECP_ERR_FULL;      sock->conn_table.arr[sock->conn_table.size] = conn;      sock->conn_table.size++; -#endif + +#endif  /* ECP_WITH_HTABLE */      return ECP_OK;  } @@ -231,6 +234,7 @@ static void conn_table_remove(ECPConnection *conn) {      int i;  #ifdef ECP_WITH_HTABLE +      if (ecp_conn_is_outb(conn)) {          for (i=0; i<ECP_MAX_CONN_KEY; i++) {              if (conn->key[i].valid) { @@ -247,7 +251,9 @@ static void conn_table_remove(ECPConnection *conn) {              }          }      } -#else + +#else   /* ECP_WITH_HTABLE */ +      for (i=0; i<sock->conn_table.size; i++) {          if (conn == sock->conn_table.arr[i]) {              while (i < (sock->conn_table.size-1)) { @@ -259,7 +265,8 @@ static void conn_table_remove(ECPConnection *conn) {              return;          }      } -#endif + +#endif  /* ECP_WITH_HTABLE */  }  static void conn_table_remove_addr(ECPConnection *conn) { @@ -278,6 +285,7 @@ static ECPConnection *conn_table_search(ECPSocket *sock, unsigned char c_idx, ec  #endif  #ifdef ECP_WITH_HTABLE +      if (c_public) {          return ecp_ht_search(sock->conn_table.keys, c_public);      } else if (addr) { @@ -285,7 +293,8 @@ static ECPConnection *conn_table_search(ECPSocket *sock, unsigned char c_idx, ec      } else {          return NULL;      } -#else + +#else   /* ECP_WITH_HTABLE */      ECPConnection *conn = NULL;      int i; @@ -319,14 +328,15 @@ static ECPConnection *conn_table_search(ECPSocket *sock, unsigned char c_idx, ec      }      return NULL; -#endif + +#endif  /* ECP_WITH_HTABLE */  }  static void conn_table_expire_inb(ECPSocket *sock, ecp_sts_t to) {      ECPConnection *conn;      ECPConnection *to_remove[ECP_MAX_EXP];      int i, remove_cnt; -    ecp_sts_t access_ts, now = ecp_tm_abstime_ms(0); +    ecp_sts_t access_ts, now = ecp_tm_get_tick();  #ifdef ECP_WITH_HTABLE      struct hashtable_itr itr; @@ -407,7 +417,7 @@ static void conn_table_expire_inb(ECPSocket *sock, ecp_sts_t to) {                  pthread_mutex_unlock(&conn->mutex);  #endif -                if (now - access_ts > to)) { +                if (now - access_ts > to) {                      to_remove[remove_cnt] = conn;                      remove_cnt++;                      if (remove_cnt == ECP_MAX_EXP) break; @@ -2185,7 +2195,7 @@ ssize_t ecp_unpack(ECPSocket *sock, ECPConnection *parent, ecp_tr_addr_t *addr,              conn->nonce_in = nonce_in;              conn->nonce_map = nonce_map;              if (is_inb) { -                conn->access_ts = ecp_tm_abstime_ms(0); +                conn->access_ts = ecp_tm_get_tick();                  if (addr) conn->remote.addr = *addr;              } | 
