Recent Forum Posts
From categories:
page 1123...next »
Segmentation fault
carlskiicarlskii 1209311214|%e %b %Y, %H:%M %Z|agohover
in discussion Hidden / Per page discussions » Pal Examples

Hi I'm trying to run the imsend.pal script against the latest release of OpenAMQ but get segmentation error when I try to send the message:

cbourne@ubuntu:~/palscripts$ ./palsend

Segmentation fault

Is this is a bug?

Regards,

Carl

Segmentation fault by carlskiicarlskii, 1209311214|%e %b %Y, %H:%M %Z|agohover

Hi,

boom E: [OpenAMQ_Common]: "c -q -li /Users/jag/develop/openamq/OpenAMQ-1.2c4/_install/include -ll /Users/jag/develop/openamq/OpenAMQ-1.2c4/_install/lib amq_constants" failed - stop

I'm also getting this error when I try to build on MAC OSX.

Regards,

Carl Bourne

Re: Build on Mac OS X fails... by carlskiicarlskii, 1209307910|%e %b %Y, %H:%M %Z|agohover
Compile on Ubuntu
carlskiicarlskii 1209233352|%e %b %Y, %H:%M %Z|agohover
in discussion Hidden / Per page discussions » Ruby Extension

Hi,

I'm trying to compile this wrapper on Ubuntu and it keeps failing. Are there any specific build instructions?

I have ruby and ruby-dev installed.

Best Regards,

Carl

Compile on Ubuntu by carlskiicarlskii, 1209233352|%e %b %Y, %H:%M %Z|agohover
JMS support
gthiruvagthiruva 1205791759|%e %b %Y, %H:%M %Z|agohover
in discussion Ongoing Development / Requests & suggestions » JMS support

Hi,

I was wondering if there's any new news about JMS support on OpenAMQ. The last piece of info from November 2007 says that JMS support would be re-introduced within several weeks.

Is that still the case? And what's the reason for the hold-up? Is this purely a legal issue? Or do you guys need some development help?

JMS support by gthiruvagthiruva, 1205791759|%e %b %Y, %H:%M %Z|agohover
Re: FreeBSD
Jacobus GelukJacobus Geluk 1204556307|%e %b %Y, %H:%M %Z|agohover
in discussion Ongoing Development / Problem reports » FreeBSD

Updated the port, fixed some bugs, added a mirror:

http://www.freebsd.org/cgi/query-pr.cgi?pr=121259&cat=ports

Re: FreeBSD by Jacobus GelukJacobus Geluk, 1204556307|%e %b %Y, %H:%M %Z|agohover

I've applied this patch to the trunk code, using "listen" instead 'of "listen-address" and "*" instead of "0.0.0.0". The svn diff on the source code (not the generated code) is quite short. There are two changes, one to base2/asl:

Index: asl_server_agent.gsl
===================================================================
--- asl_server_agent.gsl        (revision 10891)
+++ asl_server_agent.gsl        (working copy)
@@ -415,19 +415,29 @@
         else {
             apr_pool_create (&pool, icl_global_pool);
             apr_pool_tag (pool, "$(basename)_initialise_server)");
-            apr_gethostname (buffer, ICL_SHORTSTR_MAX, pool);
-            apr_sockaddr_info_get (&sockaddr, buffer, APR_UNSPEC, 0, 0, pool);

-            while (sockaddr) {
+            //  Report hostname and all visible network interfaces
+            if (apr_gethostname (buffer, ICL_SHORTSTR_MAX, pool) == APR_SUCCESS) {
+                apr_sockaddr_info_get (&sockaddr, buffer, APR_UNSPEC, 0, 0, pool);
                 apr_sockaddr_ip_get (&address, sockaddr);
                 smt_log_print ($(protocol.name)_broker->alert_log,
-                    "I: server binding to %s:%s", address, port);
-                if (strnull ($(protocol.name)_broker->host))
-                    icl_shortstr_fmt ($(protocol.name)_broker->host, "%s:%s", 
-                        address, port);
+                    "I: hostname is %s (%s)", buffer, address);
+            }
+            //  Report which interfaces server is going to listen to
+            icl_shortstr_cpy (buffer, $(basename)_config_listen ($(basename)_config));
+            if (streq (buffer, "*")) {
+                smt_log_print ($(protocol.name)_broker->alert_log,
+                    "I: listening on port %s, all network interfaces", port);
+                icl_shortstr_cpy (buffer, APR_ANYADDR);
+            }
+            else
+                smt_log_print ($(protocol.name)_broker->alert_log,
+                    "I: listening on port %s, interface %s", port, buffer);

-                sockaddr = sockaddr->next;
-            }
+            apr_sockaddr_info_get (&sockaddr, buffer, APR_UNSPEC, 0, 0, pool);
+            apr_sockaddr_ip_get (&address, sockaddr);
+            icl_shortstr_fmt ($(protocol.name)_broker->host, "%s:%s", address, port);
+
             apr_pool_destroy (pool);
             tcb->socket = smt_socket_new ();
             if (tcb->socket) {
@@ -470,9 +480,8 @@
                                 old_size, new_size);
                     }
                 }
-                
                 //  Start listening for connections on socket
-                rc = smt_socket_passive (tcb->socket, thread, port, NULL, 500);
+                rc = smt_socket_passive (tcb->socket, thread, port, buffer, 500);
             }
             if (!tcb->socket || (rc != SMT_OK)) {
                 smt_log_print ($(protocol.name)_broker->alert_log,
Index: demo_server_config.opf
===================================================================
--- demo_server_config.opf      (revision 10891)
+++ demo_server_config.opf      (working copy)
@@ -46,6 +46,16 @@
     Specifies the port on which the server should open its connections.
     </doc>
     </property>
+
+    <property name = "listen" type = "char *" default = "*">
+    Address (local network interface) to listen on
+    <doc>
+    Specifies the network interface on which the server should listen for 
+    connections.  By default this is *, meaning all interfaces.  You would 
+    choose to set an address when you use OpenAMQ on a server with multiple 
+    network interfaces, e.g. routing between two networks.
+    </doc>
+    </property>
 </path>

 <path name = "resources">

And a similar change to the OpenAMQ server code:

Index: amq_server_config.opf
===================================================================
--- amq_server_config.opf       (revision 10957)
+++ amq_server_config.opf       (working copy)
@@ -45,6 +45,16 @@
     </doc>
     </property>

+    <property name = "listen" type = "char *" default = "*">
+    Address (local network interface) to listen on
+    <doc>
+    Specifies the network interface on which the server should listen for 
+    connections.  By default this is *, meaning all interfaces.  You would 
+    choose to set an address when you use OpenAMQ on a server with multiple 
+    network interfaces, e.g. routing between two networks.
+    </doc>
+    </property>
+
     <property name = "queue timeout" type = "int" default = "0" dynamic = "1">
     Timeout for auto-deleted queues
     <doc>
Copyright (c) 2008 Esteve Fernandez <esteve.fernandez@gmail.com>

Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
=== added directory 'debian'
=== added file 'debian/changelog'
--- OpenAMQ-1.2c4.old/debian/changelog    1970-01-01 00:00:00 +0000
+++ OpenAMQ-1.2c4/debian/changelog    2008-01-22 18:22:21 +0000
@@ -0,0 +1,6 @@
+openamq (1.2c4-1) unstable; urgency=low
+
+  * Initial release.
+
+ -- Esteve Fernandez <esteve.fernandez@gmail.com>  Mon, 21 Jan 2008 14:55:56 -0600
+

=== added file 'debian/compat'
--- OpenAMQ-1.2c4.old/debian/compat    1970-01-01 00:00:00 +0000
+++ OpenAMQ-1.2c4/debian/compat    2008-01-22 18:22:21 +0000
@@ -0,0 +1,1 @@
+4

=== added file 'debian/conffiles'
--- OpenAMQ-1.2c4.old/debian/conffiles    1970-01-01 00:00:00 +0000
+++ OpenAMQ-1.2c4/debian/conffiles    2008-01-22 18:22:21 +0000
@@ -0,0 +1,1 @@
+/etc/openamq/amq_server_base.cfg

=== added file 'debian/control'
--- OpenAMQ-1.2c4.old/debian/control    1970-01-01 00:00:00 +0000
+++ OpenAMQ-1.2c4/debian/control    2008-01-22 18:57:16 +0000
@@ -0,0 +1,28 @@
+Source: openamq
+Section: net
+Priority: optional
+Maintainer: Esteve Fernandez <esteve.fernandez@gmail.com>
+Build-Depends: debhelper (>= 4.0.0), build-essential
+Standards-Version: 3.6.2
+
+Package: openamq
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Original reference implementation of AMQP, written in C/C++.
+ OpenAMQ is the original reference implementation of AMQP,
+ written in C/C++ by iMatix.
+ .
+ It's a complete AMQ message queueing broker that aims for performance,
+ ease of use, and high reliability.
+
+Package: openamq-doc
+Architecture: all
+Description: Documentation for openamq
+ OpenAMQ is the original reference implementation of AMQP,
+ written in C/C++ by iMatix.
+ .
+ It's a complete AMQ message queueing broker that aims for performance,
+ ease of use, and high reliability.
+ .
+ This package contains the reference documentation for OpenAMQ and all
+ the related components.

=== added file 'debian/copyright'
--- OpenAMQ-1.2c4.old/debian/copyright    1970-01-01 00:00:00 +0000
+++ OpenAMQ-1.2c4/debian/copyright    2008-01-22 18:25:43 +0000
@@ -0,0 +1,10 @@
+This package was debianized by Esteve Fernandez <esteve.fernandez@gmail.com> on
+Mon, 21 Jan 2008 14:55:56 -0600.
+
+It was downloaded from http://openamq.org/download/OpenAMQ-1.2c4.tar.gz
+
+Copyright Holder: iMatix Corporation.
+
+License:
+
+Distributed under the GNU General Public License.

=== added file 'debian/dirs'
--- OpenAMQ-1.2c4.old/debian/dirs    1970-01-01 00:00:00 +0000
+++ OpenAMQ-1.2c4/debian/dirs    2008-01-22 18:24:03 +0000
@@ -0,0 +1,1 @@
+usr/bin

=== added file 'debian/docs'
--- OpenAMQ-1.2c4.old/debian/docs    1970-01-01 00:00:00 +0000
+++ OpenAMQ-1.2c4/debian/docs    2008-01-22 18:23:35 +0000
@@ -0,0 +1,1 @@
+readme.txt

=== added file 'debian/openamq-doc.docs'
--- OpenAMQ-1.2c4.old/debian/openamq-doc.docs    1970-01-01 00:00:00 +0000
+++ OpenAMQ-1.2c4/debian/openamq-doc.docs    2008-01-22 18:22:21 +0000
@@ -0,0 +1,1 @@
+debian/openamq-build/doc/

=== added file 'debian/openamq-doc.install'
=== added file 'debian/openamq.default'
--- OpenAMQ-1.2c4.old/debian/openamq.default    1970-01-01 00:00:00 +0000
+++ OpenAMQ-1.2c4/debian/openamq.default    2008-01-22 18:22:21 +0000
@@ -0,0 +1,10 @@
+# Defaults for openamq initscript
+# sourced by /etc/init.d/openamq
+# installed at /etc/default/openamq by the maintainer scripts
+
+#
+# This is a POSIX shell fragment
+#
+
+# Additional options that are passed to the Daemon.
+DAEMON_OPTS="--trace 1 -s /etc/openamq/amq_server_base.cfg"

=== added file 'debian/openamq.dirs'
--- OpenAMQ-1.2c4.old/debian/openamq.dirs    1970-01-01 00:00:00 +0000
+++ OpenAMQ-1.2c4/debian/openamq.dirs    2008-01-22 18:22:21 +0000
@@ -0,0 +1,1 @@
+etc/openamq

=== added file 'debian/openamq.docs'
--- OpenAMQ-1.2c4.old/debian/openamq.docs    1970-01-01 00:00:00 +0000
+++ OpenAMQ-1.2c4/debian/openamq.docs    2008-01-22 18:22:21 +0000
@@ -0,0 +1,1 @@
+readme.txt

=== added file 'debian/openamq.init'
--- OpenAMQ-1.2c4.old/debian/openamq.init    1970-01-01 00:00:00 +0000
+++ OpenAMQ-1.2c4/debian/openamq.init    2008-01-22 18:22:21 +0000
@@ -0,0 +1,75 @@
+#! /bin/sh
+#
+# skeleton    example file to build /etc/init.d/ scripts.
+#        This file should be used to construct scripts for /etc/init.d.
+#
+#        Written by Miquel van Smoorenburg <miquels@cistron.nl>.
+#        Modified for Debian 
+#        by Ian Murdock <imurdock@gnu.ai.mit.edu>.
+#
+# Version:    @(#)skeleton  1.9  26-Feb-2001  miquels@cistron.nl
+#
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/bin/amq_server
+NAME=openamq
+DESC=openamq
+USER=openamq
+GROUP=openamq
+
+test -x $DAEMON || exit 0
+
+# Include openamq defaults if available
+if [ -f /etc/default/openamq ] ; then
+    . /etc/default/openamq
+fi
+
+set -e
+
+case "$1" in
+  start)
+    echo -n "Starting $DESC: "
+    start-stop-daemon -m -b --chuid $USER:$GROUP --start --quiet --pidfile /var/run/$NAME.pid \
+        --exec $DAEMON -- $DAEMON_OPTS
+    echo "$NAME."
+    ;;
+  stop)
+    echo -n "Stopping $DESC: "
+    start-stop-daemon --chuid $USER:$GROUP --stop --pidfile /var/run/$NAME.pid
+    echo "$NAME."
+    ;;
+  #reload)
+    #
+    #    If the daemon can reload its config files on the fly
+    #    for example by sending it SIGHUP, do it here.
+    #
+    #    If the daemon responds to changes in its config file
+    #    directly anyway, make this a do-nothing entry.
+    #
+    # echo "Reloading $DESC configuration files."
+    # start-stop-daemon --stop --signal 1 --quiet --pidfile \
+    #    /var/run/$NAME.pid --exec $DAEMON
+  #;;
+  restart|force-reload)
+    #
+    #    If the "reload" option is implemented, move the "force-reload"
+    #    option to the "reload" entry above. If not, "force-reload" is
+    #    just the same as "restart".
+    #
+    echo -n "Restarting $DESC: "
+    start-stop-daemon --chuid $USER:$GROUP --stop --quiet --pidfile \
+        /var/run/$NAME.pid --exec $DAEMON
+    sleep 1
+    start-stop-daemon --chuid $USER:$GROUP --start --quiet --pidfile \
+        /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
+    echo "$NAME."
+    ;;
+  *)
+    N=/etc/init.d/$NAME
+    # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+    echo "Usage: $N {start|stop|restart|force-reload}" >&2
+    exit 1
+    ;;
+esac
+
+exit 0

=== added file 'debian/openamq.install'
--- OpenAMQ-1.2c4.old/debian/openamq.install    1970-01-01 00:00:00 +0000
+++ OpenAMQ-1.2c4/debian/openamq.install    2008-01-22 18:22:21 +0000
@@ -0,0 +1,2 @@
+debian/tmp/usr/bin
+debian/tmp/etc/openamq

=== added file 'debian/openamq.postinst'
--- OpenAMQ-1.2c4.old/debian/openamq.postinst    1970-01-01 00:00:00 +0000
+++ OpenAMQ-1.2c4/debian/openamq.postinst    2008-01-22 18:22:21 +0000
@@ -0,0 +1,24 @@
+#!/bin/sh
+case "$1" in
+    configure)
+        if ! getent passwd openamq>/dev/null; then
+            echo "Creating/updating openamq user/group account..."
+            adduser --home /var/lib/openamq \
+                --gecos "OpenAMQ system user" \
+                --system \
+                --quiet --group --disabled-password openamq
+        fi
+        chown -R openamq:openamq /var/lib/openamq
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+#DEBHELPER#

=== added file 'debian/rules'
--- OpenAMQ-1.2c4.old/debian/rules    1970-01-01 00:00:00 +0000
+++ OpenAMQ-1.2c4/debian/rules    2008-01-22 18:22:21 +0000
@@ -0,0 +1,126 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+#
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+#
+# Modified to make a template file for a multi-binary package with separated
+# build-arch and build-indep targets  by Bill Allombert 2001
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# This has to be exported to make some magic below work.
+export DH_OPTIONS
+
+configure: configure-stamp
+configure-stamp:
+    dh_testdir
+    # Add here commands to configure the package.
+
+    touch configure-stamp
+
+
+#Architecture 
+build: build-arch build-indep
+
+build-arch: build-arch-stamp
+build-arch-stamp: configure-stamp 
+
+    # Add here commands to compile the arch part of the package.
+    #$(MAKE) 
+    IBASE=$(CURDIR)/debian/openamq-build sh build.sh
+    touch build-arch-stamp
+
+build-indep: build-indep-stamp
+build-indep-stamp: configure-stamp 
+
+    # Add here commands to compile the indep part of the package.
+    #$(MAKE) doc
+    touch build-indep-stamp
+
+clean:
+    dh_testdir
+    dh_testroot
+    rm -f build-arch-stamp build-indep-stamp #CONFIGURE-STAMP#
+
+    # Add here commands to clean up after the build process.
+    rm -rf $(CURDIR)/debian/openamq-build
+
+    dh_clean 
+
+install: install-indep install-arch
+install-indep:
+    dh_testdir
+    dh_testroot
+    dh_clean -k -i 
+    dh_installdirs -i
+
+    # Add here commands to install the indep part of the package into
+    # debian/<package>-doc.
+    #INSTALLDOC#
+
+    dh_install -i
+
+install-arch:
+    dh_testdir
+    dh_testroot
+    dh_clean -k -s 
+    dh_installdirs -s
+
+    # Add here commands to install the arch part of the package into 
+    # debian/tmp.
+    mkdir -p $(CURDIR)/debian/tmp/usr/bin
+    mkdir -p $(CURDIR)/debian/tmp/etc/openamq
+    #mkdir -p $(CURDIR)/debian/openamq/usr/share/doc/openamq
+    cp -a $(CURDIR)/debian/openamq-build/bin/amq_client $(CURDIR)/debian/tmp/usr/bin
+    cp -a $(CURDIR)/debian/openamq-build/bin/amq_server $(CURDIR)/debian/tmp/usr/bin
+    cp -a $(CURDIR)/debian/openamq-build/bin/amq_shell $(CURDIR)/debian/tmp/usr/bin
+    cp -a $(CURDIR)/debian/openamq-build/bin/amq_server_base.cfg $(CURDIR)/debian/tmp/etc/openamq
+    #cp -a $(CURDIR)/debian/openamq-build/doc $(CURDIR)/debian/openamq/usr/share/doc/openamq/docs
+
+    dh_install -s
+# Must not depend on anything. This is to be called by
+# binary-arch/binary-indep
+# in another 'make' thread.
+binary-common:
+    dh_testdir
+    dh_testroot
+    dh_installchangelogs 
+    dh_installdocs
+    dh_installexamples
+#    dh_installmenu
+#    dh_installdebconf    
+#    dh_installlogrotate    
+#    dh_installemacsen
+#    dh_installpam
+#    dh_installmime
+    dh_installinit
+#    dh_installcron
+#    dh_installinfo
+    dh_installman
+    dh_link
+    dh_strip
+    dh_compress 
+    dh_fixperms
+#    dh_perl
+#    dh_python
+    dh_makeshlibs
+    dh_installdeb
+    dh_shlibdeps
+    dh_gencontrol
+    dh_md5sums
+    dh_builddeb
+# Build architecture independant packages using the common target.
+binary-indep: build-indep install-indep
+    $(MAKE) -f debian/rules DH_OPTIONS=-i binary-common
+
+# Build architecture dependant packages using the common target.
+binary-arch: build-arch install-arch
+    $(MAKE) -f debian/rules DH_OPTIONS=-a binary-common
+
+binary: binary-arch binary-indep
+.PHONY: build clean binary-indep binary-arch binary install install-indep install-arch configure
[openamq-dev] proposal & patch: Debian packaging by esteveesteve, 1201193386|%e %b %Y, %H:%M %Z|agohover
Copyright (c) 2008 Esteve Fernandez <esteve.fernandez@gmail.com>

Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
=== modified file 'OpenAMQ-1.2c4/server/amq_server_agent.c'
--- OpenAMQ-1.2c4.old/OpenAMQ-1.2c4/server/amq_server_agent.c    2008-01-22 14:19:18 +0000
+++ OpenAMQ-1.2c4/OpenAMQ-1.2c4/server/amq_server_agent.c    2008-01-22 17:47:18 +0000
@@ -20723,7 +20723,8 @@
         else {
             apr_pool_create (&pool, icl_global_pool);
             apr_pool_tag (pool, "amq_server_initialise_server)");
-            apr_gethostname (buffer, ICL_SHORTSTR_MAX, pool);
+            icl_shortstr_cpy(buffer, amq_server_config_listen_address (amq_server_config));
+
             apr_sockaddr_info_get (&sockaddr, buffer, APR_UNSPEC, 0, 0, pool);

             while (sockaddr) {
@@ -20780,7 +20781,7 @@
                 }

                 //  Start listening for connections on socket
-                rc = smt_socket_passive (tcb->socket, thread, port, NULL, 500);
+                rc = smt_socket_passive (tcb->socket, thread, port, buffer, 500);
             }
             if (!tcb->socket || (rc != SMT_OK)) {
                 smt_log_print (amq_broker->alert_log,

=== modified file 'OpenAMQ-1.2c4/server/amq_server_config.c'
--- OpenAMQ-1.2c4.old/OpenAMQ-1.2c4/server/amq_server_config.c    2008-01-22 14:19:18 +0000
+++ OpenAMQ-1.2c4/OpenAMQ-1.2c4/server/amq_server_config.c    2008-01-22 17:47:18 +0000
@@ -37,6 +37,8 @@
 #define self_cmdline_help   amq_server_config_cmdline_help
 #define self_cmdline_parse  amq_server_config_cmdline_parse
 #define self_options_help   amq_server_config_options_help
+#define self_set_listen_address  amq_server_config_set_listen_address
+#define self_listen_address  amq_server_config_listen_address
 #define self_set_port       amq_server_config_set_port
 #define self_port           amq_server_config_port
 #define self_set_queue_timeout  amq_server_config_set_queue_timeout
@@ -142,6 +144,12 @@
 #if (defined (BASE_STATS)  ||  defined (BASE_STATS_AMQ_SERVER_CONFIG)  ||  defined (BASE_STATS_AMQ_SERVER_CONFIG_OPTIONS_HELP))
 static icl_stats_t *s_amq_server_config_options_help_stats = NULL;
 #endif
+#if (defined (BASE_STATS)  ||  defined (BASE_STATS_AMQ_SERVER_CONFIG)  ||  defined (BASE_STATS_AMQ_SERVER_CONFIG_SET_LISTEN_ADDRESS))
+static icl_stats_t *s_amq_server_config_set_listen_address_stats = NULL;
+#endif
+#if (defined (BASE_STATS)  ||  defined (BASE_STATS_AMQ_SERVER_CONFIG)  ||  defined (BASE_STATS_AMQ_SERVER_CONFIG_LISTEN_ADDRESS))
+static icl_stats_t *s_amq_server_config_listen_address_stats = NULL;
+#endif
 #if (defined (BASE_STATS)  ||  defined (BASE_STATS_AMQ_SERVER_CONFIG)  ||  defined (BASE_STATS_AMQ_SERVER_CONFIG_SET_PORT))
 static icl_stats_t *s_amq_server_config_set_port_stats = NULL;
 #endif
@@ -462,6 +470,13 @@
     //  All properties on server path
     ipr_config_locate (self->config, "/config/server", NULL);

+    //  Get listen_address property from config file or built-in defaults
+    value = ipr_config_get (self->config, "listen_address", NULL);
+    if (value)
+        icl_shortstr_cpy (self->listen_address, value);
+    else
+        icl_shortstr_cpy (self->listen_address, "0.0.0.0");
+
     //  Get port property from config file or built-in defaults
     value = ipr_config_get (self->config, "port", NULL);
     if (value)
@@ -1114,6 +1129,7 @@
 #endif

 printf ("Options that override config values; these take an argument:\n");
+printf ("  --listen_address  Server address to listen on\n");
 printf ("  --port           Server port for clients\n");
 printf ("  --queue_timeout  Timeout for auto-deleted queues\n");
 printf ("  --max_memory_mb  Maximum allowed memory, MBytes\n");
@@ -1236,6 +1252,9 @@
             argn++;

             //  Set property
+            if (streq (arg_name, "--listen_address"))
+                self_set_listen_address (self, arg_value);
+            else
             if (streq (arg_name, "--port"))
                 self_set_port (self, arg_value);
             else
@@ -1423,6 +1442,12 @@

 printf ("\nThese are the configured options for %s\n\n", name);

+printf ("/config/server/listen_address - Server address to listen on\n");
+printf ("    From command-line: --listen_address newvalue\n");
+printf ("    Specifies the address on which the server should listen for incoming connections.\n");
+printf ("    Current value is '%s'. Default value is '0.0.0.0'\n", self->listen_address);
+printf ("\n");
+
 printf ("/config/server/port - Server port for clients\n");
 printf ("    From command-line: --port newvalue\n");
 printf ("    Specifies the port on which the server should open its connections.\n");
@@ -1717,6 +1742,159 @@
     return (rc);
 }
 /*  -------------------------------------------------------------------------
+    amq_server_config_set_listen_address
+
+    Type: Component method
+    Accepts a amq_server_config_t reference and returns zero in case of success,
+    1 in case of errors.
+    -------------------------------------------------------------------------
+ */
+
+int
+    amq_server_config_set_listen_address (
+    amq_server_config_t * self,         //  Reference to object
+    char * listen_address               //  Not documented
+)
+{
+#if (defined (BASE_THREADSAFE))
+    icl_rwlock_t
+        *rwlock;
+#endif
+
+    int
+        rc = 0;                         //  Return code
+
+#if (defined (BASE_ANIMATE)  ||  defined (BASE_ANIMATE_AMQ_SERVER_CONFIG)  ||  defined (BASE_ANIMATE_AMQ_SERVER_CONFIG_SET_LISTEN_ADDRESS))
+    if (amq_server_config_animating)
+        icl_console_print ("<amq_server_config_set_listen_address_start"
+#if (defined (BASE_THREADSAFE))
+" thread=\"%pp\""
+#endif
+" self=\"%pp\""
+" listen_address=\"%s\""
+"/>"
+#if (defined (BASE_THREADSAFE))
+, apr_os_thread_current ()
+#endif
+, self, listen_address);
+#endif
+
+#if (defined (BASE_TRACE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_LISTEN_ADDRESS))
+    icl_trace_record (NULL, amq_server_config_dump, 91);
+#endif
+
+#if (defined (BASE_STATS)  ||  defined (BASE_STATS_AMQ_SERVER_CONFIG)  ||  defined (BASE_STATS_AMQ_SERVER_CONFIG_SET_LISTEN_ADDRESS))
+    icl_stats_inc ("amq_server_config_set_listen_address", &s_amq_server_config_set_listen_address_stats);
+#endif
+
+#if (defined (BASE_THREADSAFE))
+    rwlock = self ? self->rwlock : NULL;
+    if (rwlock)
+        icl_rwlock_write_lock (rwlock);
+#endif
+
+AMQ_SERVER_CONFIG_ASSERT_SANE (self);
+
+ipr_config_putp (self->config, "/config/server", "listen_address", listen_address);
+listen_address = ipr_config_getp (self->config, "/config/server", "listen_address", NULL);
+assert (listen_address);
+icl_shortstr_cpy (self->listen_address, listen_address);
+
+#if (defined (BASE_THREADSAFE))
+    if (rwlock)
+        icl_rwlock_unlock (rwlock);
+#endif
+
+#if (defined (BASE_TRACE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_LISTEN_ADDRESS))
+    icl_trace_record (NULL, amq_server_config_dump, 0x10000 + 91);
+#endif
+
+#if (defined (BASE_ANIMATE)   || defined (BASE_ANIMATE_AMQ_SERVER_CONFIG)   || defined (BASE_ANIMATE_AMQ_SERVER_CONFIG_SET_LISTEN_ADDRESS))
+    if (amq_server_config_animating)
+        icl_console_print ("<amq_server_config_set_listen_address_finish"
+#if (defined (BASE_THREADSAFE))
+" thread=\"%pp\""
+#endif
+" self=\"%pp\""
+" listen_address=\"%s\""
+" rc=\"%i\""
+"/>"
+#if (defined (BASE_THREADSAFE))
+, apr_os_thread_current ()
+#endif
+, self, listen_address, rc);
+#endif
+
+
+    return (rc);
+}
+/*  -------------------------------------------------------------------------
+    amq_server_config_listen_address
+
+    Type: Component method
+    -------------------------------------------------------------------------
+ */
+
+char *
+    amq_server_config_listen_address (
+    amq_server_config_t * self          //  Reference to self
+)
+{
+    char *
+        listen_address;                 //  Not documented
+
+#if (defined (BASE_ANIMATE)  ||  defined (BASE_ANIMATE_AMQ_SERVER_CONFIG)  ||  defined (BASE_ANIMATE_AMQ_SERVER_CONFIG_LISTEN_ADDRESS))
+    if (amq_server_config_animating)
+        icl_console_print ("<amq_server_config_listen_address_start"
+#if (defined (BASE_THREADSAFE))
+" thread=\"%pp\""
+#endif
+" self=\"%pp\""
+"/>"
+#if (defined (BASE_THREADSAFE))
+, apr_os_thread_current ()
+#endif
+, self);
+#endif
+
+#if (defined (BASE_TRACE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_LISTEN_ADDRESS))
+    icl_trace_record (NULL, amq_server_config_dump, 92);
+#endif
+
+#if (defined (BASE_STATS)  ||  defined (BASE_STATS_AMQ_SERVER_CONFIG)  ||  defined (BASE_STATS_AMQ_SERVER_CONFIG_LISTEN_ADDRESS))
+    icl_stats_inc ("amq_server_config_listen_address", &s_amq_server_config_listen_address_stats);
+#endif
+
+//
+if (self)
+    listen_address = self->listen_address;
+else
+    listen_address = "0.0.0.0";
+#if (defined (BASE_TRACE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_LISTEN_ADDRESS))
+    icl_trace_record (NULL, amq_server_config_dump, 0x10000 + 92);
+#endif
+
+#if (defined (BASE_ANIMATE)   || defined (BASE_ANIMATE_AMQ_SERVER_CONFIG)   || defined (BASE_ANIMATE_AMQ_SERVER_CONFIG_LISTEN_ADDRESS))
+    if (amq_server_config_animating)
+        icl_console_print ("<amq_server_config_listen_address_finish"
+#if (defined (BASE_THREADSAFE))
+" thread=\"%pp\""
+#endif
+" self=\"%pp\""
+" listen_address=\"%s\""
+"/>"
+#if (defined (BASE_THREADSAFE))
+, apr_os_thread_current ()
+#endif
+, self, listen_address);
+#endif
+
+
+    return (listen_address);
+}
+
+
+/*  -------------------------------------------------------------------------
     amq_server_config_set_port

     Type: Component method
@@ -6947,6 +7125,7 @@
 AMQ_SERVER_CONFIG_ASSERT_SANE (self);

 smt_log_print (logfile, "*******************  Configuration Settings  ********************");
+smt_log_print (logfile, "listen_address=%s", self->listen_address);
 smt_log_print (logfile, "port=%s", self->port);
 smt_log_print (logfile, "queue_timeout=%i", self->queue_timeout);
 smt_log_print (logfile, "max_memory_mb=%zu", self->max_memory_mb);
@@ -7905,7 +8084,7 @@
 #endif

 }
-#if (defined (BASE_TRACE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_NEW)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DESTROY)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_COMMIT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ROLLBACK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CMDLINE_HELP)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CMDLINE_PARSE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_OPTIONS_HELP)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_PORT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_PORT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_QUEUE_TIMEOUT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_QUEUE_TIMEOUT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_MAX_MEMORY_MB)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_MAX_MEMORY_MB)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_PER_CLIENT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_PER_CLIENT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_MONITOR)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_MONITOR)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DUMP_STATE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DUMP_STATE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_RECORD_STATS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_RECORD_STATS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_LOG_PATH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_LOG_PATH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_KEEP_LOGS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_KEEP_LOGS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_ARCHIVE_PATH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ARCHIVE_PATH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_ARCHIVE_CMD)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ARCHIVE_CMD)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_ALERT_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ALERT_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DAILY_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DAILY_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DEBUG_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DEBUG_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DEBUG_ROUTE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DEBUG_ROUTE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DEBUG_QUEUE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DEBUG_QUEUE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DEBUG_PEERING)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DEBUG_PEERING)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DEBUG_CONSOLE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DEBUG_CONSOLE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_TRACE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_TRACE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_HEARTBEAT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_HEARTBEAT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_POLLING_THREADS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_POLLING_THREADS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_WORKING_THREADS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_WORKING_THREADS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_TCP_NODELAY)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_TCP_NODELAY)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_TCP_RCVBUF)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_TCP_RCVBUF)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_TCP_SNDBUF)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_TCP_SNDBUF)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_FRAME_MAX)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_FRAME_MAX)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_CLUSTER_VHOST)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CLUSTER_VHOST)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_IS_PRIMARY)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_IS_PRIMARY)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_IS_BACKUP)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_IS_BACKUP)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_PRIMARY_PEER)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_PRIMARY_PEER)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_BACKUP_PEER)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_BACKUP_PEER)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_AUTO_CRASH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_AUTO_CRASH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_AUTO_BLOCK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_AUTO_BLOCK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_KERNEL_LIMIT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_KERNEL_LIMIT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DUMP_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SELFTEST)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_TERMINATE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SHOW)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DESTROY_PUBLIC)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ALLOC)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_FREE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_READ_LOCK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_WRITE_LOCK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_UNLOCK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CACHE_INITIALISE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CACHE_PURGE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CACHE_TERMINATE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ANIMATE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_NEW_IN_SCOPE) )
+#if (defined (BASE_TRACE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_NEW)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DESTROY)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_COMMIT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ROLLBACK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CMDLINE_HELP)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CMDLINE_PARSE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_OPTIONS_HELP)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_LISTEN_ADDRESS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_LISTEN_ADDRESS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_PORT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_PORT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_QUEUE_TIMEOUT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_QUEUE_TIMEOUT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_MAX_MEMORY_MB)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_MAX_MEMORY_MB)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_PER_CLIENT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_PER_CLIENT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_MONITOR)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_MONITOR)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DUMP_STATE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DUMP_STATE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_RECORD_STATS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_RECORD_STATS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_LOG_PATH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_LOG_PATH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_KEEP_LOGS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_KEEP_LOGS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_ARCHIVE_PATH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ARCHIVE_PATH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_ARCHIVE_CMD)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ARCHIVE_CMD)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_ALERT_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ALERT_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DAILY_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DAILY_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DEBUG_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DEBUG_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DEBUG_ROUTE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DEBUG_ROUTE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DEBUG_QUEUE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DEBUG_QUEUE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DEBUG_PEERING)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DEBUG_PEERING)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DEBUG_CONSOLE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DEBUG_CONSOLE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_TRACE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_TRACE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_HEARTBEAT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_HEARTBEAT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_POLLING_THREADS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_POLLING_THREADS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_WORKING_THREADS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_WORKING_THREADS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_TCP_NODELAY)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_TCP_NODELAY)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_TCP_RCVBUF)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_TCP_RCVBUF)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_TCP_SNDBUF)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_TCP_SNDBUF)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_FRAME_MAX)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_FRAME_MAX)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_CLUSTER_VHOST)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CLUSTER_VHOST)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_IS_PRIMARY)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_IS_PRIMARY)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_IS_BACKUP)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_IS_BACKUP)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_PRIMARY_PEER)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_PRIMARY_PEER)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_BACKUP_PEER)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_BACKUP_PEER)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_AUTO_CRASH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_AUTO_CRASH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_AUTO_BLOCK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_AUTO_BLOCK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_KERNEL_LIMIT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_KERNEL_LIMIT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DUMP_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SELFTEST)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_TERMINATE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SHOW)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DESTROY_PUBLIC)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ALLOC)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_FREE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_READ_LOCK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_WRITE_LOCK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_UNLOCK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CACHE_INITIALISE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CACHE_PURGE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CACHE_TERMINATE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ANIMATE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_NEW_IN_SCOPE) )
 void
 amq_server_config_dump (icl_os_thread_t thread, apr_time_t time, qbyte info)
 {
@@ -8005,6 +8184,8 @@
         case 88: method_name = "cache terminate"; break;
         case 89: method_name = "animate"; break;
         case 90: method_name = "new in scope"; break;
+        case 91: method_name = "set listen_address"; break;
+        case 92: method_name = "listen_address"; break;
     }
     icl_console_print_thread_time (thread, time,
                                    "amq_server_config %s%s",

=== modified file 'OpenAMQ-1.2c4/server/amq_server_config.h'
--- OpenAMQ-1.2c4.old/OpenAMQ-1.2c4/server/amq_server_config.h    2008-01-22 14:19:18 +0000
+++ OpenAMQ-1.2c4/OpenAMQ-1.2c4/server/amq_server_config.h    2008-01-22 15:13:33 +0000
@@ -114,6 +114,8 @@
 icl_shortstr_t
     filename;                       //  Configuration file name            
 icl_shortstr_t
+    listen_address;                 //  Server address to listen on
+icl_shortstr_t
     port;                           //  Server port for clients
 int
     queue_timeout;                  //  Timeout for auto-deleted queues
@@ -230,6 +232,17 @@
 );

 int
+    amq_server_config_set_listen_address (
+amq_server_config_t * self,             //  Reference to object
+char * listen_address                   //  Not documented
+);
+
+char *
+    amq_server_config_listen_address (
+amq_server_config_t * self              //  Reference to self
+);
+
+int
     amq_server_config_set_port (
 amq_server_config_t * self,             //  Reference to object
 char * port                             //  Not documented
@@ -691,7 +704,7 @@
 extern "C" {
 #   endif

-#if (defined (BASE_TRACE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_NEW)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DESTROY)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_COMMIT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ROLLBACK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CMDLINE_HELP)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CMDLINE_PARSE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_OPTIONS_HELP)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_PORT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_PORT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_QUEUE_TIMEOUT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_QUEUE_TIMEOUT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_MAX_MEMORY_MB)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_MAX_MEMORY_MB)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_PER_CLIENT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_PER_CLIENT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_MONITOR)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_MONITOR)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DUMP_STATE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DUMP_STATE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_RECORD_STATS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_RECORD_STATS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_LOG_PATH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_LOG_PATH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_KEEP_LOGS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_KEEP_LOGS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_ARCHIVE_PATH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ARCHIVE_PATH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_ARCHIVE_CMD)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ARCHIVE_CMD)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_ALERT_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ALERT_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DAILY_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DAILY_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DEBUG_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DEBUG_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DEBUG_ROUTE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DEBUG_ROUTE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DEBUG_QUEUE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DEBUG_QUEUE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DEBUG_PEERING)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DEBUG_PEERING)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DEBUG_CONSOLE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DEBUG_CONSOLE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_TRACE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_TRACE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_HEARTBEAT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_HEARTBEAT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_POLLING_THREADS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_POLLING_THREADS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_WORKING_THREADS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_WORKING_THREADS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_TCP_NODELAY)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_TCP_NODELAY)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_TCP_RCVBUF)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_TCP_RCVBUF)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_TCP_SNDBUF)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_TCP_SNDBUF)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_FRAME_MAX)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_FRAME_MAX)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_CLUSTER_VHOST)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CLUSTER_VHOST)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_IS_PRIMARY)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_IS_PRIMARY)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_IS_BACKUP)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_IS_BACKUP)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_PRIMARY_PEER)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_PRIMARY_PEER)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_BACKUP_PEER)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_BACKUP_PEER)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_AUTO_CRASH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_AUTO_CRASH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_AUTO_BLOCK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_AUTO_BLOCK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_KERNEL_LIMIT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_KERNEL_LIMIT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DUMP_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SELFTEST)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_TERMINATE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SHOW)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DESTROY_PUBLIC)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ALLOC)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_FREE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_READ_LOCK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_WRITE_LOCK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_UNLOCK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CACHE_INITIALISE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CACHE_PURGE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CACHE_TERMINATE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ANIMATE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_NEW_IN_SCOPE) )
+#if (defined (BASE_TRACE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_NEW)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DESTROY)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_COMMIT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ROLLBACK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CMDLINE_HELP)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CMDLINE_PARSE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_OPTIONS_HELP)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_LISTEN_ADDRESS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_LISTEN_ADDRESS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_PORT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_PORT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_QUEUE_TIMEOUT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_QUEUE_TIMEOUT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_MAX_MEMORY_MB)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_MAX_MEMORY_MB)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_PER_CLIENT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_PER_CLIENT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_MONITOR)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_MONITOR)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DUMP_STATE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DUMP_STATE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_RECORD_STATS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_RECORD_STATS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_LOG_PATH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_LOG_PATH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_KEEP_LOGS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_KEEP_LOGS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_ARCHIVE_PATH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ARCHIVE_PATH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_ARCHIVE_CMD)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ARCHIVE_CMD)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_ALERT_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ALERT_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DAILY_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DAILY_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DEBUG_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DEBUG_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DEBUG_ROUTE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DEBUG_ROUTE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DEBUG_QUEUE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DEBUG_QUEUE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DEBUG_PEERING)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DEBUG_PEERING)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_DEBUG_CONSOLE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DEBUG_CONSOLE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_TRACE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_TRACE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_HEARTBEAT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_HEARTBEAT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_POLLING_THREADS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_POLLING_THREADS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_WORKING_THREADS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_WORKING_THREADS)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_TCP_NODELAY)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_TCP_NODELAY)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_TCP_RCVBUF)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_TCP_RCVBUF)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_TCP_SNDBUF)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_TCP_SNDBUF)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_FRAME_MAX)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_FRAME_MAX)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_CLUSTER_VHOST)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CLUSTER_VHOST)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_IS_PRIMARY)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_IS_PRIMARY)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_IS_BACKUP)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_IS_BACKUP)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_PRIMARY_PEER)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_PRIMARY_PEER)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_BACKUP_PEER)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_BACKUP_PEER)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_AUTO_CRASH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_AUTO_CRASH)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_AUTO_BLOCK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_AUTO_BLOCK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SET_KERNEL_LIMIT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_KERNEL_LIMIT)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DUMP_LOG)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SELFTEST)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_TERMINATE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_SHOW)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_DESTROY_PUBLIC)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ALLOC)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_FREE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_READ_LOCK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_WRITE_LOCK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_UNLOCK)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CACHE_INITIALISE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CACHE_PURGE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_CACHE_TERMINATE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_ANIMATE)   || defined (BASE_TRACE_AMQ_SERVER_CONFIG_NEW_IN_SCOPE) )
 void
     amq_server_config_dump (icl_os_thread_t thread, apr_time_t time, qbyte info);
 #endif
FreeBSD
Jacobus GelukJacobus Geluk 1199199351|%e %b %Y, %H:%M %Z|agohover
in discussion Ongoing Development / Problem reports » FreeBSD

I just created a port for OpenAMQ. It has been submitted to "GNATS"
with PR number 119224.
See //www.freebsd.org/cgi/query-pr.cgi?pr=ports/119224 to view
its status or to download the shar file to use and test the port.

FreeBSD by Jacobus GelukJacobus Geluk, 1199199351|%e %b %Y, %H:%M %Z|agohover
Re: OpenAMQ/JMS released
martin_sustrikmartin_sustrik 1194975810|%e %b %Y, %H:%M %Z|agohover
in discussion Ongoing Development / News » OpenAMQ/JMS released

The package should be available in within several next weeks.

Re: OpenAMQ/JMS released by martin_sustrikmartin_sustrik, 1194975810|%e %b %Y, %H:%M %Z|agohover
Re: OpenAMQ/JMS released
benoitdebenoitde 1194625391|%e %b %Y, %H:%M %Z|agohover
in discussion Ongoing Development / News » OpenAMQ/JMS released

Hi,
Any news on the availability of the JMS package?
Thx!

Re: OpenAMQ/JMS released by benoitdebenoitde, 1194625391|%e %b %Y, %H:%M %Z|agohover

Fixed. Sorry for inconvenience.

Re: The links to the sources do not work... by martin_sustrikmartin_sustrik, 1194325237|%e %b %Y, %H:%M %Z|agohover

By checking whether there are any messages available. You can either try to get message straight away (amq_client_session_basic_arrived) - in that case return value of NULL means that no message is available - or you can check the number of pending messages (amq_client_session_get_basic_arrived_count).

Hope that helps.

Ok, I understand that -1 is for errors only and a timeout is not an error. But how do you then check if a timeout occurred and no messages have been received?

I think the documentation needs fixing; we always use -1 in our APIs to indicate an error status, and 'timeout expired' is not an error.

Re: amq_client_session_wait returns 0 when timeout expires by pieterhpieterh, 1193297132|%e %b %Y, %H:%M %Z|agohover

What was the problem that you fixed?

We've not tested on FreeBSD for a while, but it used to work fine. If there are any problems they will be in the build process and will be easy to fix.

Re: Build on Mac OS X fails... by pieterhpieterh, 1193296455|%e %b %Y, %H:%M %Z|agohover

You are right. The function returns 0 if message is received or timeout expires, -1 in case of error. However, the documentation states that "Returns zero if content arrived, or -1 if the timeout expired".

Looking at our applications I see they consider a call to wait timeouted if it returns 0 and there are no messages available. I suppose this is a bug in documentation.

Thoughts anyone?

Running the amq server and client with tcmalloc instead of malloc produces a dramatic improvement in latency. In our environment, using tcmalloc reduced the median latency by 34%.

tcmalloc improves latency a great deal by rhayesrhayes, 1193256572|%e %b %Y, %H:%M %Z|agohover

The following code is very similar to the example in the OpenAMQ docs:

if (amq_client_session_wait (implChannel, 5000)) {
    if (implChannel->alive) {
        logDebug << "Timeout expired" ;
    } else {
        logDebug << "Channel died" ;
    }
} else {
    logDebug << "Message(s) arrived" ;
}

My problem is that I never get the message "Timeout expired". The other two work.
The docs say that -1 will be returned when the timeout expired. This does not happen here. amq_client_session_wait always returns 0 when the timeout expires or when messages arrived.

amq_client_session_wait returns 0 when timeout expires by Jacobus GelukJacobus Geluk, 1193054323|%e %b %Y, %H:%M %Z|agohover

I fixed the problem. I use Mac OS X for development purposes only, not for production. I think we will use FreeBSD for that, does OpenAMQ have any problems on FreeBSD?

Re: Build on Mac OS X fails... by Jacobus GelukJacobus Geluk, 1193053519|%e %b %Y, %H:%M %Z|agohover