#define A_VERSION 0x0100000
#define SDB_VERSION_MAJOR 2 // increments upon significant architectural changes or the achievement of important milestones
#define SDB_VERSION_MINOR 2 // progress is made within a major version
-#define SDB_VERSION_PATCH 17 // increments for small sets of changes
+#define SDB_VERSION_PATCH 18 // increments for small sets of changes
#define SDB_VERSION_MAX_LENGTH 128
extern MAP hex_map;
sdb_close(fd);
return -1;
}
+ sdb_close(fd);
char *tokens[3];
size_t cnt = tokenize(buf, ".", tokens, 3);
if (cnt) {
free_strings(tokens, cnt);
}
- sdb_close(fd);
int fd2 = _sdb_connect("host:kill", ext_args);
sdb_close(fd2);
sdb_sleep_ms(2000);
LIST_NODE** hash_list = &(this->map_node_list[hash_key]);
LIST_NODE* result_node = find_in_list(this, *hash_list, key);
- if(result_node != NULL) {
- this->freedata(result_node->data);
- LIST_NODE* prev = result_node->prev_ptr;
- LIST_NODE* next = result_node->next_ptr;
-
- if(prev == NULL && next == NULL) {
- *hash_list = NULL;
- }
- else {
- if(prev != NULL) {
- prev->next_ptr = next;
- }
-
- if(next != NULL) {
- next->prev_ptr = prev;
- }
- }
-
- free(result_node);
- }
+ remove_node(hash_list, result_node, this->freedata);
}
void map_clear(MAP* this) {
static SDB_HANDLE* alloc_handle(int socket) {
SDB_HANDLE* _h = NULL;
- sdb_mutex_lock(&_win32_lock, "_fh_alloc");
+ sdb_mutex_lock(&_win32_lock, "_fh_alloc _win32_lock");
if(total_handle_number < WIN32_MAX_FHS) {
total_handle_number++;
LOG_INFO("no free socket. assign socket fd FD(%d)\n", _h->fd);
}
else {
- sdb_mutex_lock(&free_socket_handle_list_lock, "_fh_alloc");
+ sdb_mutex_lock(&free_socket_handle_list_lock, "_fh_alloc free_socket_handle_list_lock");
_h = free_socket_handle_list->data;
remove_first(&free_socket_handle_list, no_free);
- sdb_mutex_unlock(&free_socket_handle_list_lock, "_fh_alloc");
+ sdb_mutex_unlock(&free_socket_handle_list_lock, "_fh_alloc free_socket_handle_list_lock");
LOG_INFO("reuse socket fd FD(%d)\n", _h->fd);
}
_h->u.socket = INVALID_SOCKET;
LOG_ERROR("no more space for file descriptor. max file descriptor is %d\n", WIN32_MAX_FHS);
}
- sdb_mutex_unlock(&_win32_lock, "_fh_alloc");
+ sdb_mutex_unlock(&_win32_lock, "_fh_alloc _win32_lock");
return _h;
}
_h->u.file_handle = INVALID_HANDLE_VALUE;
free(_h);
}
+ sdb_mutex_lock(&_win32_lock, "_fh_close");
total_handle_number--;
+ sdb_mutex_unlock(&_win32_lock, "_fh_close");
return 0;
}