Changeset - f742dae46248
[Not reviewed]
0 1 0
HanzZ - 14 years ago 2012-02-17 11:50:33
hanzz.k@gmail.com
wait 10s
1 file changed with 1 insertions and 1 deletions:
0 comments (0 inline, 0 general)
backends/skype/main.cpp
Show inline comments
 
@@ -321,97 +321,97 @@ class SpectrumNetworkPlugin : public NetworkPlugin {
 
									"</config>\n";
 
			g_file_set_contents(std::string(std::string("/tmp/skype/") + m_username + "/shared.xml").c_str(), shared_xml.c_str(), -1, NULL);
 

	
 
			std::string config_xml = "<?xml version=\"1.0\"?>\n"
 
									"<config version=\"1.0\" serial=\"7\" timestamp=\"" + boost::lexical_cast<std::string>(time(NULL)) + ".0\">\n"
 
										"<Lib>\n"
 
											"<Account>\n"
 
											"<IdleTimeForAway>30000000</IdleTimeForAway>\n"
 
											"<IdleTimeForNA>300000000</IdleTimeForNA>\n"
 
											"<LastUsed>" + boost::lexical_cast<std::string>(time(NULL)) + "</LastUsed>\n"
 
											"</Account>\n"
 
										"</Lib>\n"
 
										"<UI>\n"
 
											"<API>\n"
 
											"<Authorizations>Spectrum</Authorizations>\n"
 
											"<BlockedPrograms></BlockedPrograms>\n"
 
											"</API>\n"
 
										"</UI>\n"
 
									"</config>\n";
 
			g_file_set_contents(std::string(std::string("/tmp/skype/") + m_username + "/" + m_username +"/config.xml").c_str(), config_xml.c_str(), -1, NULL);
 
			std::string db_path = std::string("/tmp/skype/") + m_username;
 
			char *db = (char *) malloc(db_path.size() + 1);
 
			strcpy(db, db_path.c_str());
 
			LOG4CXX_INFO(logger,  m_username << ": Spawning new Skype instance dbpath=" << db);
 
			gchar* argv[6] = {"skype", "--disable-cleanlooks", "--pipelogin", "--dbpath", db, 0};
 

	
 
			int fd;
 
			int fd_output;
 
			g_spawn_async_with_pipes(NULL,
 
				argv,
 
				NULL /*envp*/,
 
				G_SPAWN_SEARCH_PATH,
 
				NULL /*child_setup*/,
 
				NULL /*user_data*/,
 
				&m_pid /*child_pid*/,
 
				&fd,
 
				NULL,
 
				&fd_output,
 
				NULL /*error*/);
 
			std::string login_data = std::string(m_username + " " + m_password + "\n");
 
			LOG4CXX_INFO(logger,  m_username << ": Login data=" << login_data);
 
			write(fd, login_data.c_str(), login_data.size());
 
			close(fd);
 
			
 
			fcntl (fd_output, F_SETFL, O_NONBLOCK);
 

	
 
			free(db);
 

	
 
			sleep(2);
 
			sleep(10);
 

	
 
			GError *error = NULL;
 
			DBusObjectPathVTable vtable;
 

	
 
			//Initialise threading
 
			dbus_threads_init_default();
 
			
 
			if (m_connection == NULL)
 
			{
 
				m_connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
 
				if (m_connection == NULL && error != NULL)
 
				{
 
					LOG4CXX_INFO(logger,  m_username << ": DBUS Error: " << error->message);
 
					g_error_free(error);
 
					return;
 
				}
 
			}
 
			
 
			if (m_proxy == NULL)
 
			{
 
				m_proxy = dbus_g_proxy_new_for_name_owner (m_connection,
 
												"com.Skype.API",
 
												"/com/Skype",
 
												"com.Skype.API",
 
												&error);
 
				if (m_proxy == NULL && error != NULL)
 
				{
 
					LOG4CXX_INFO(logger,  m_username << ":" << error->message);
 
					g_error_free(error);
 
				}
 
				
 
				vtable.message_function = &skype_notify_handler;
 
				dbus_connection_register_object_path(dbus_g_connection_get_connection(m_connection), "/com/Skype/Client", &vtable, this);
 
			}
 

	
 
			int counter = 0;
 
			std::string re = "CONNSTATUS OFFLINE";
 
			while (re == "CONNSTATUS OFFLINE" || re.empty()) {
 
				sleep(1);
 
				gchar buffer[1024];
 
				int bytes_read;
 
				bytes_read = read (fd_output, buffer, 1023);
 
				if (bytes_read > 0) {
 
					buffer[bytes_read] = 0;
 
					np->handleDisconnected(m_user, 0, buffer);
 
					close(fd_output);
 
					logout();
 
					return;
0 comments (0 inline, 0 general)