This commit is contained in:
Vitaly Takmazov 2011-12-08 15:29:05 +04:00
commit 794b2dbaa0
2 changed files with 17 additions and 8 deletions

View file

@ -211,6 +211,7 @@ int main(int argc, char **argv)
return 1;
}
#ifndef WIN32
if (!CONFIG_STRING(&config, "service.group").empty() ||!CONFIG_STRING(&config, "service.user").empty() ) {
struct group *gr;
if ((gr = getgrnam(CONFIG_STRING(&config, "service.group").c_str())) == NULL) {
@ -225,7 +226,6 @@ int main(int argc, char **argv)
chown(CONFIG_STRING(&config, "service.working_dir").c_str(), pw->pw_uid, gr->gr_gid);
}
#ifndef WIN32
if (!no_daemon) {
// daemonize
daemonize(CONFIG_STRING(&config, "service.working_dir").c_str(), CONFIG_STRING(&config, "service.pidfile").c_str());
@ -260,7 +260,7 @@ int main(int argc, char **argv)
std::string dir;
BOOST_FOREACH(const log4cxx::LogString &prop, p.propertyNames()) {
if (boost::ends_with(prop, ".File")) {
dir = p.get(prop);
log4cxx::helpers::Transcoder::encode(p.get(prop), dir);
boost::replace_all(dir, "${jid}", jid);
break;
}

View file

@ -116,9 +116,18 @@ void RosterManager::sendBuddyRosterPush(Buddy *buddy) {
payload->addItem(item);
std::vector<Swift::Presence::ref> presences = m_component->getPresenceOracle()->getAllPresence(m_user->getJID().toBare());
BOOST_FOREACH(Swift::Presence::ref presence, presences) {
Swift::SetRosterRequest::ref request = Swift::SetRosterRequest::create(payload, presence->getFrom(), m_component->getIQRouter());
// In server mode we have to send pushes to all resources, but in gateway-mode we send it only to bare JID
if (m_component->inServerMode()) {
std::vector<Swift::Presence::ref> presences = m_component->getPresenceOracle()->getAllPresence(m_user->getJID().toBare());
BOOST_FOREACH(Swift::Presence::ref presence, presences) {
Swift::SetRosterRequest::ref request = Swift::SetRosterRequest::create(payload, presence->getFrom(), m_component->getIQRouter());
request->onResponse.connect(boost::bind(&RosterManager::handleBuddyRosterPushResponse, this, _1, request, buddy->getName()));
request->send();
m_requests.push_back(request);
}
}
else {
Swift::SetRosterRequest::ref request = Swift::SetRosterRequest::create(payload, m_user->getJID().toBare(), m_component->getIQRouter());
request->onResponse.connect(boost::bind(&RosterManager::handleBuddyRosterPushResponse, this, _1, request, buddy->getName()));
request->send();
m_requests.push_back(request);
@ -332,8 +341,8 @@ void RosterManager::handleSubscription(Swift::Presence::ref presence) {
else {
Swift::Presence::ref response = Swift::Presence::create();
Swift::Presence::ref currentPresence;
response->setTo(presence->getFrom());
response->setFrom(presence->getTo());
response->setTo(presence->getFrom().toBare());
response->setFrom(presence->getTo().toBare().toString() + "/bot");
Buddy *buddy = getBuddy(Buddy::JIDToLegacyName(presence->getTo()));
if (buddy) {
@ -355,7 +364,7 @@ void RosterManager::handleSubscription(Swift::Presence::ref presence) {
break;
// just send response
case Swift::Presence::Unsubscribed:
// response->setType(Swift::Presence::Unsubscribe);
response->setType(Swift::Presence::Unsubscribe);
break;
default:
return;