diff --git a/CMakeLists.txt b/CMakeLists.txt index 099de02ae3942c4ed630282c8d12a190f1db5cf0..1fbbeaf64dbc01d6484b5274564411e77bce7fd3 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,9 +20,27 @@ endif() file(GLOB DAP_SERVER_CORE_SOURCES src/*.c) file(GLOB DAP_SERVER_CORE_HEADERS include/*.h) +if(WIN32) + include_directories(../libdap/src/win32/) + include_directories(../3rdparty/libmemcached/) + include_directories(../3rdparty/libmemcached/win32/) + include_directories(../3rdparty/wepoll/include/) + include_directories(../3rdparty/uthash/src/) + include_directories(../3rdparty/libjson-c/) + include_directories(../3rdparty/libmagic/src/) + include_directories(../3rdparty/curl/include/) +endif() + add_library(${PROJECT_NAME} STATIC ${DAP_SERVER_CORE_HEADERS} ${DAP_SERVER_CORE_SOURCES}) -target_link_libraries(${PROJECT_NAME} dap_core dap_crypto pthread memcached ev) +if(WIN32) + target_link_libraries(${PROJECT_NAME} dap_core dap_crypto) +endif() + +if(UNIX) + target_link_libraries(${PROJECT_NAME} dap_core dap_crypto pthread memcached ev) +endif() + target_include_directories(${PROJECT_NAME} PUBLIC include) target_include_directories(${PROJECT_NAME} PRIVATE src) diff --git a/include/dap_memcached.h b/include/dap_memcached.h index 169a1bf2d6126acaff65dc6dcd8599b80c9d2b8f..ba7c4fa65259bd7b78d471cf2d5771f9276c8aae 100755 --- a/include/dap_memcached.h +++ b/include/dap_memcached.h @@ -1,6 +1,5 @@ #pragma once - #include <stdint.h> #include <stdbool.h> diff --git a/src/dap_client_remote.c b/src/dap_client_remote.c index 6f60751ff90eee8ff93421a8558268648f8e5733..ae4f01f2d00ee9bd929835cac64d6af34c275674 100755 --- a/src/dap_client_remote.c +++ b/src/dap_client_remote.c @@ -36,7 +36,7 @@ #include <mswsock.h> #include <ws2tcpip.h> #include <io.h> -#include "wrappers.h" +//#include "wrappers.h" #include <wepoll.h> #include <pthread.h> #endif @@ -136,14 +136,20 @@ void dap_client_remote_remove( dap_client_remote_t *sc ) HASH_DEL( t->hclients, sc ); pthread_mutex_unlock( &t->mutex_on_hash ); - if( sc->server->client_delete_callback ) + if( sc->server->client_delete_callback ) { sc->server->client_delete_callback( sc, NULL ); // Init internal structure + } - if( sc->_inheritor ) + if( sc->_inheritor ) { free( sc->_inheritor ); + } - if( sc->socket ) - close( sc->socket ); + if( sc->socket ) { + log_it( L_INFO, "dap_client_remote_remove close( %d );", sc->socket ); + Sleep( 100 ); +// close( sc->socket ); + closesocket( sc->socket ); + } free( sc ); } @@ -259,7 +265,7 @@ size_t dap_client_remote_write_f( dap_client_remote_t *a_client, const char * a_ va_list ap; va_start( ap, a_format ); - int ret = vsnprintf( a_client->buf_out + a_client->buf_out_size, max_data_size, a_format, ap ); + int ret = dap_vsnprintf( a_client->buf_out + a_client->buf_out_size, max_data_size, a_format, ap ); va_end( ap ); diff --git a/src/dap_events.c b/src/dap_events.c index 36d981f503a1434d2555a9c2de1fee2b37653fde..4de70b8e5b3a1e6f809e0831848bb5f6e27f8ba6 100755 --- a/src/dap_events.c +++ b/src/dap_events.c @@ -65,9 +65,6 @@ #include "wrappers.h" #include <wepoll.h> #include <pthread.h> - -//#define NO_TIMER - #endif #include <utlist.h> diff --git a/src/dap_events_socket.c b/src/dap_events_socket.c index c90b4139ab69a80d09fa14044e131e168f183d48..7e78cd00b8f6b0c695fa61b08c1d62eff6dff5bf 100755 --- a/src/dap_events_socket.c +++ b/src/dap_events_socket.c @@ -40,7 +40,6 @@ #include <mswsock.h> #include <ws2tcpip.h> #include <io.h> -#include "wrappers.h" #include <wepoll.h> #include <pthread.h> #endif @@ -271,8 +270,10 @@ void dap_events_socket_delete( dap_events_socket_t *a_es, bool preserve_inherito if ( a_es->_inheritor && !preserve_inheritor ) free( a_es->_inheritor ); - if ( a_es->socket ) - close( a_es->socket ); + if ( a_es->socket ) { +// close( a_es->socket ); + closesocket( a_es->socket ); + } free( a_es ); } @@ -307,7 +308,7 @@ size_t dap_events_socket_write_f(dap_events_socket_t *sc, const char * format,.. size_t max_data_size = sizeof(sc->buf_out)-sc->buf_out_size; va_list ap; va_start(ap,format); - int ret=vsnprintf((char*) sc->buf_out+sc->buf_out_size,max_data_size,format,ap); + int ret=dap_vsnprintf((char*) sc->buf_out+sc->buf_out_size,max_data_size,format,ap); va_end(ap); if(ret>0){ sc->buf_out_size+=ret; @@ -327,7 +328,7 @@ size_t dap_events_socket_write_f(dap_events_socket_t *sc, const char * format,.. */ size_t dap_events_socket_read(dap_events_socket_t *sc, void *data, size_t data_size) { - log_it(L_DEBUG,"dap_events_socket_read %u sock data %X size %u", sc->socket, data, data_size ); +// log_it(L_DEBUG,"dap_events_socket_read %u sock data %X size %u", sc->socket, data, data_size ); if(data_size<sc->buf_in_size){ memcpy(data,sc->buf_in,data_size); diff --git a/src/dap_memcached.c b/src/dap_memcached.c index 924cf41e15f6472629e5dd9d03a35b16f7c7b7ff..746d63ad1a1fff5245a82ca1d40ac31c99b5a7d8 100755 --- a/src/dap_memcached.c +++ b/src/dap_memcached.c @@ -1,4 +1,17 @@ +#ifdef _WIN32 +#undef _WIN32_WINNT +#define _WIN32_WINNT 0x0600 +#include <winsock2.h> +#include <windows.h> +#include <mswsock.h> +#include <ws2tcpip.h> +#include <io.h> +#include <wepoll.h> +#include <pthread.h> + +#endif + #include "dap_memcached.h" #include <libmemcached/memcached.h> diff --git a/src/dap_server.c b/src/dap_server.c index cf0f38abb3dd787756755b58e3cb152a99d3672b..eb9321f09b634c878fe2b385b6025727785d068a 100755 --- a/src/dap_server.c +++ b/src/dap_server.c @@ -52,8 +52,8 @@ #include <windows.h> #include <mswsock.h> #include <ws2tcpip.h> -#include <io.h> #include "wrappers.h" +#include <io.h> #include <wepoll.h> #include <pthread.h> #endif @@ -105,7 +105,7 @@ static uint32_t get_epoll_max_user_watches( void ) FILE *fp = fopen( maxepollpath, "r" ); if ( !fp ) { - printf("can't open %s\n", maxepollpath ); +// printf("can't open %s\n", maxepollpath ); return v; } @@ -344,6 +344,7 @@ dap_client_remote_t *dap_server_add_socket( int32_t fd, int32_t forced_thread_n pthread_mutex_lock( &dsth->mutex_dlist_add_remove ); + DL_APPEND( dsth->dap_remote_clients, dcr ); dsth->connections_count ++; if ( epoll_ctl( dsth->epoll_fd, EPOLL_CTL_ADD, fd, &dcr->pevent) != 0 ) { @@ -381,7 +382,7 @@ void dap_server_remove_socket( dap_client_remote_t *dcr ) // pthread_mutex_unlock( &dsth->mutex_dlist_add_remove ); - log_it( L_DEBUG, "dcr = %X", dcr ); +// log_it( L_DEBUG, "dcr = %X", dcr ); } static void s_socket_all_check_activity( uint32_t tn, time_t cur_time ) @@ -665,7 +666,6 @@ void *thread_loop( void *arg ) dap_server_remove_socket( dap_cur ); dap_client_remote_remove( dap_cur ); - log_it( L_INFO, "[ Thread %u ] coneections: %u, to kill: %u", tn, dsth->connections_count, dsth->to_kill_count ); pthread_mutex_unlock( &dsth->mutex_dlist_add_remove ); } diff --git a/src/dap_traffic_track.c b/src/dap_traffic_track.c index 60e7822ab3ff1d1742745dcdf691827a047aabbf..872e3616e34b5286aeffb57fc6a26a3ea93778af 100755 --- a/src/dap_traffic_track.c +++ b/src/dap_traffic_track.c @@ -39,7 +39,6 @@ #include <mswsock.h> #include <ws2tcpip.h> #include <io.h> -#include "wrappers.h" #include <wepoll.h> #include <pthread.h> #endif