int idaapi thread_handle_session(void *ctx) { rpc_server_t *server = (rpc_server_t *)ctx; static int s_sess_id = 1; int sess_id = s_sess_id++; lprintf("session %d entered\n", sess_id); handle_single_session(server); lprintf("session %d exiting\n", sess_id); return 0; }
void handle_session(rpc_server_t *server) { #ifndef __SINGLE_THREADED_SERVER__ qthread_t t = qthread_create(thread_handle_session, (void *)server); // Add the session to the list qmutex_lock(g_lock); clients_list[server] = t; qmutex_unlock(g_lock); #else g_global_server = server; handle_single_session(server); g_global_server = NULL; #endif }
//-------------------------------------------------------------------------- void handle_session(rpc_server_t *server) { #ifndef __SINGLE_THREADED_SERVER__ qthread_t t = qthread_create(thread_handle_session, (void *)server); bool run_handler = false; #else bool t = true; bool run_handler = true; #endif // Add the session to the list srv_lock_begin(); clients_list[server] = t; g_global_server = server; srv_lock_end(); if ( run_handler ) handle_single_session(server); }
//-------------------------------------------------------------------------- int idaapi thread_handle_session(void *ctx) { rpc_server_t *server = (rpc_server_t *)ctx; handle_single_session(server); return 0; }