presence-on-subscribe needed, ie. for deliver rcpt

Denver Gingerich created

Change summary

sgx-catapult.rb | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)

Detailed changes

sgx-catapult.rb 🔗

@@ -33,7 +33,7 @@ require 'log4r'
 
 $stdout.sync = true
 
-puts "Soprani.ca/SMS Gateway for XMPP - Catapult        v0.025\n\n"
+puts "Soprani.ca/SMS Gateway for XMPP - Catapult        v0.026\n\n"
 
 if ARGV.size != 9 then
 	puts "Usage: sgx-catapult.rb <component_jid> <component_password> " +
@@ -212,6 +212,8 @@ module SGXcatapult
 	presence :subscribe? do |p|
 		puts "PRESENCE1: #{p.inspect}"
 
+
+		# subscriptions are allowed from anyone - send reply immediately
 		msg = Blather::Stanza::Presence.new
 		msg.to = p.from
 		msg.from = p.to
@@ -219,6 +221,22 @@ module SGXcatapult
 
 		puts "RESPONSE5: #{msg.inspect}"
 		write_to_stream msg
+
+
+		# send a <presence> immediately; not automatically probed for it
+		# TODO: refactor so no "presence :probe? do |p|" duplicate below
+		caps = Blather::Stanza::Capabilities.new
+		# TODO: user a better node URI (?)
+		caps.node = 'http://catapult.sgx.soprani.ca/'
+		caps.identities = user_cap_identities()
+		caps.features = user_cap_features()
+
+		msg = caps.c
+		msg.to = p.from
+		msg.from = p.to.to_s + '/sgx'
+
+		puts 'RESPONSE0: ' + msg.inspect
+		write_to_stream msg
 	end
 
 	presence :probe? do |p|