def handle_client_connection(conn, addr): """ This method is responsible to Handle a client connection and creating two background threads...One for handling client request pdus and other for delivering smses to client.. """ print("Accepted connection from: " + repr(addr)) server_session = SMPPSession('server', conn) server_session.server_db_store = SMPPServer.db_storage server_session.server_validate_method = SMPPServer.validate server_session.server_query_result = SMPPServer.query_result server_session.server_cancel_result = SMPPServer.cancel_result server_session.server_replace_result = SMPPServer.replace_result server_session.sever_fetch_sms = fetch_incoming_sms server_session.commit_db = commit_db # background thread 1 to handle client request pdus by recieving them from socket and storing them in dictionary background_thread = threading.Thread(target=handle_client_requests, args=(server_session, conn)) background_thread.start() # background thread 2 to check database for messages after every 5secs and deliever smses to client if any background_thread2 = threading.Thread(target=deliver_sms, args=(server_session, conn)) background_thread2.start() # parent thread # current thread for sending responses to client while server_session.state != SessionState.UNBOUND: server_session.handle_pdu() conn.close() #time.sleep(1) background_thread.join() background_thread2.join()