From: dbs Date: Fri, 20 Nov 2009 20:56:25 +0000 (+0000) Subject: Merge Bill Erickson's fixes (r1730, r1731) from trunk for recent versions of ejabberd X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=041d95cafa11d0b04f3ee6c2d89d8b4f40ab3e54;p=OpenSRF.git Merge Bill Erickson's fixes (r1730, r1731) from trunk for recent versions of ejabberd Set the 'from' address in outbound xmpp messages git-svn-id: svn://svn.open-ils.org/OpenSRF/branches/rel_1_2@1861 9efc2488-bf62-4759-914b-345cdb29e865 --- diff --git a/include/opensrf/transport_client.h b/include/opensrf/transport_client.h index 2bd7605..d7dffb9 100644 --- a/include/opensrf/transport_client.h +++ b/include/opensrf/transport_client.h @@ -20,6 +20,8 @@ struct transport_client_struct { transport_message* msg_q_tail; transport_session* session; int error; + char* host; + char* xmpp_id; }; typedef struct transport_client_struct transport_client; diff --git a/src/libopensrf/transport_client.c b/src/libopensrf/transport_client.c index be83eb7..1d9f7fe 100644 --- a/src/libopensrf/transport_client.c +++ b/src/libopensrf/transport_client.c @@ -62,6 +62,7 @@ transport_client* client_init( const char* server, int port, const char* unix_pa client->session->message_callback = client_message_handler; client->error = 0; + client->host = strdup(server); return client; } @@ -71,6 +72,7 @@ int client_connect( transport_client* client, const char* username, const char* password, const char* resource, int connect_timeout, enum TRANSPORT_AUTH_TYPE auth_type ) { if(client == NULL) return 0; + client->xmpp_id = va_list_to_string("%s@%s/%s", username, client->host, resource); return session_connect( client->session, username, password, resource, connect_timeout, auth_type ); } @@ -89,6 +91,7 @@ int client_connected( const transport_client* client ) { int client_send_message( transport_client* client, transport_message* msg ) { if(client == NULL) return 0; if( client->error ) return -1; + msg->sender = strdup(client->xmpp_id); // free'd in message_free return session_send_msg( client->session, msg ); } @@ -186,6 +189,8 @@ int client_free( transport_client* client ){ current = next; } + free(client->host); + free(client->xmpp_id); free( client ); return 1; } diff --git a/src/perl/lib/OpenSRF/Transport/SlimJabber/Client.pm b/src/perl/lib/OpenSRF/Transport/SlimJabber/Client.pm index e6f6705..f30abf5 100644 --- a/src/perl/lib/OpenSRF/Transport/SlimJabber/Client.pm +++ b/src/perl/lib/OpenSRF/Transport/SlimJabber/Client.pm @@ -113,6 +113,7 @@ sub send { my $self = shift; my $msg = OpenSRF::Transport::SlimJabber::XMPPMessage->new(@_); $msg->osrf_xid($logger->get_osrf_xid); + $msg->from($self->xmpp_id); $self->reader->send($msg->to_xml); } @@ -130,8 +131,6 @@ sub initialize { my $resource = $self->params->{resource}; my $password = $self->params->{password}; - my $jid = "$username\@$host/$resource"; - my $conf = OpenSRF::Utils::Config->current; my $tail = "_$$"; @@ -153,10 +152,19 @@ sub initialize { throw OpenSRF::EX::Jabber("Could not authenticate with Jabber server: $@") unless ( $self->reader->connected ); + $self->xmpp_id("$username\@$host/$resource"); return $self; } +# Our full login: username@host/resource +sub xmpp_id { + my($self, $xmpp_id) = @_; + $self->{xmpp_id} = $xmpp_id if $xmpp_id; + return $self->{xmpp_id}; +} + + =head2 construct =cut