Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [paho-dev] List * handles passed as NULL in MQTTAsync.c

Ah okay, thanks I didn't realize that was what the wrapper function did.

Here is the output from Make and the gcc cross compiler:

arm-none-linux-gnueabi-gcc (GCC) 4.3.3
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

Thanks for you help.

Here is my Make dump:

mkdir -p build/output/samples
mkdir -p build/output/test
/usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -g -fPIC -O0 -Wall  -shared -Wl,-soname,libpaho-mqtt3c.so.1 -Wl,-init,MQTTClient_init  -o build/output/libpaho-mqtt3c.so.1.0 src/Clients.c src/Heap.c src/LinkedList.c src/Log.c src/Messages.c src/MQTTClient.c src/MQTTPacket.c src/MQTTPacketOut.c src/MQTTPersistence.c src/MQTTPersistenceDefault.c src/MQTTProtocolClient.c src/MQTTProtocolOut.c src/SocketBuffer.c src/Socket.c src/StackTrace.c src/Thread.c src/Tree.c src/utf-8.c
ln -s libpaho-mqtt3c.so.1.0  build/output/libpaho-mqtt3c.so.1
ln -s libpaho-mqtt3c.so.1 build/output/libpaho-mqtt3c.so
/usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -g -fPIC -O0 -Wall  -shared -Wl,-soname,libpaho-mqtt3cs.so.1 -ldl -lcrypto -lssl -Wl,-no-whole-archive -Wl,-init,MQTTClient_init  -o build/output/libpaho-mqtt3cs.so.1.0 src/Clients.c src/Heap.c src/LinkedList.c src/Log.c src/Messages.c src/MQTTClient.c src/MQTTPacket.c src/MQTTPacketOut.c src/MQTTPersistence.c src/MQTTPersistenceDefault.c src/MQTTProtocolClient.c src/MQTTProtocolOut.c src/SocketBuffer.c src/Socket.c src/SSLSocket.c src/StackTrace.c src/Thread.c src/Tree.c src/utf-8.c -DOPENSSL
ln -s libpaho-mqtt3cs.so.1.0  build/output/libpaho-mqtt3cs.so.1
ln -s libpaho-mqtt3cs.so.1 build/output/libpaho-mqtt3cs.so
/usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -g -fPIC -O0 -Wall  -shared -Wl,-soname,libpaho-mqtt3a.so.1 -Wl,-init,MQTTAsync_init  -o build/output/libpaho-mqtt3a.so.1.0 src/Clients.c src/Heap.c src/LinkedList.c src/Log.c src/Messages.c src/MQTTAsync.c src/MQTTPacket.c src/MQTTPacketOut.c src/MQTTPersistence.c src/MQTTPersistenceDefault.c src/MQTTProtocolClient.c src/MQTTProtocolOut.c src/SocketBuffer.c src/Socket.c src/StackTrace.c src/Thread.c src/Tree.c src/utf-8.c
src/MQTTAsync.c: In function 'Protocol_processPublication':
src/MQTTAsync.c:1797: warning: format '%x' expects type 'unsigned int', but argument 2 has type 'pthread_t'
src/MQTTAsync.c:1800: warning: format '%d' expects type 'int', but argument 2 has type 'pthread_t'
ln -s libpaho-mqtt3a.so.1.0  build/output/libpaho-mqtt3a.so.1
ln -s libpaho-mqtt3a.so.1 build/output/libpaho-mqtt3a.so
/usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -g -fPIC -O0 -Wall  -shared -Wl,-soname,libpaho-mqtt3as.so.1 -ldl -lcrypto -lssl -Wl,-no-whole-archive -Wl,-init,MQTTAsync_init  -o build/output/libpaho-mqtt3as.so.1.0 src/Clients.c src/Heap.c src/LinkedList.c src/Log.c src/Messages.c src/MQTTAsync.c src/MQTTPacket.c src/MQTTPacketOut.c src/MQTTPersistence.c src/MQTTPersistenceDefault.c src/MQTTProtocolClient.c src/MQTTProtocolOut.c src/SocketBuffer.c src/Socket.c src/SSLSocket.c src/StackTrace.c src/Thread.c src/Tree.c src/utf-8.c -DOPENSSL
src/MQTTAsync.c: In function 'Protocol_processPublication':
src/MQTTAsync.c:1797: warning: format '%x' expects type 'unsigned int', but argument 2 has type 'pthread_t'
src/MQTTAsync.c:1800: warning: format '%d' expects type 'int', but argument 2 has type 'pthread_t'
ln -s libpaho-mqtt3as.so.1.0  build/output/libpaho-mqtt3as.so.1
ln -s libpaho-mqtt3as.so.1 build/output/libpaho-mqtt3as.so
/usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -I src -lpthread -L build/output -o build/output/MQTTVersion -lpaho-mqtt3a src/MQTTVersion.c -ldl
/usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -o build/output/samples/pubasync src/samples/pubasync.c -lpaho-mqtt3cs -I src -lpthread -L build/output  -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lssl -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lcrypto -ldl
/usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -o build/output/samples/subasync src/samples/subasync.c -lpaho-mqtt3cs -I src -lpthread -L build/output  -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lssl -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lcrypto -ldl
/usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -o build/output/samples/stdoutsuba src/samples/stdoutsuba.c -lpaho-mqtt3as -I src -lpthread -L build/output -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lssl -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lcrypto -ldl
/usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -o build/output/samples/MQTTAsync_subscribe src/samples/MQTTAsync_subscribe.c -lpaho-mqtt3as -I src -lpthread -L build/output -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lssl -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lcrypto -ldl
/usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -o build/output/samples/MQTTAsync_publish src/samples/MQTTAsync_publish.c -lpaho-mqtt3as -I src -lpthread -L build/output -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lssl -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lcrypto -ldl
/usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -g -o build/output/test/test1 src/../test/test1.c -lpaho-mqtt3c -I src -lpthread -L build/output
/usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -v -g -o build/output/test/test3 src/../test/test3.c -lpaho-mqtt3cs -I src -lpthread -L build/output -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lssl -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lcrypto -ldl	
Using built-in specs.
Target: arm-none-linux-gnueabi
Configured with: /home/rgs/toolchain-src-jaunty.rgs0/gcc-4.3-4.3.3/src/configure --prefix=/usr/local/toolchain-arm-jaunty.rgs0 --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --disable-libmudflap --disable-libssp --with-gnu-as --with-gnu-ld --disable-nls --enable-symvers=gnu --enable-__cxa_atexit --disable-libstdcxx-pch --disable-libgomp --with-sysroot=/usr/local/toolchain-arm-jaunty.rgs0/sysroot --with-build-sysroot=/usr/local/toolchain-arm-jaunty.rgs0/sysroot --with-build-time-tools=/usr/local/toolchain-arm-jaunty.rgs0/arm-none-linux-gnueabi/bin --disable-bootstrap --program-prefix=arm-none-linux-gnueabi- --with-gmp=/home/rgs/toolchain-src-jaunty.rgs0/install/gmp --with-mpfr=/home/rgs/toolchain-src-jaunty.rgs0/install/mpfr --enable-threads --enable-shared --enable-languages=c,c++
Thread model: posix
gcc version 4.3.3 (GCC) 
COLLECT_GCC_OPTIONS='-v' '-g' '-o' 'build/output/test/test3' '-I' 'src' '-L' 'build/output' '-L/usr/local/toolchain-arm-jaunty.rgs0/lib/' '-L/usr/local/toolchain-arm-jaunty.rgs0/lib/'
 /opt/toolchain-arm-jaunty.rgs0/bin/../libexec/gcc/arm-none-linux-gnueabi/4.3.3/cc1 -quiet -v -I src -iprefix /opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/ -isysroot /opt/toolchain-arm-jaunty.rgs0/bin/../sysroot src/../test/test3.c -D_FORTIFY_SOURCE=2 -quiet -dumpbase test3.c -auxbase test3 -g -version -fstack-protector -o /tmp/ccla2309.s
ignoring nonexistent directory "/opt/toolchain-arm-jaunty.rgs0/bin/../sysroot/usr/local/include"
ignoring duplicate directory "/opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/../../lib/gcc/arm-none-linux-gnueabi/4.3.3/include"
ignoring duplicate directory "/opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/../../lib/gcc/arm-none-linux-gnueabi/4.3.3/include-fixed"
ignoring duplicate directory "/opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/../../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/include"
#include "..." search starts here:
#include <...> search starts here:
 src
 /opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/include
 /opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/include-fixed
 /opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/include
 /opt/toolchain-arm-jaunty.rgs0/bin/../sysroot/usr/include
End of search list.
GNU C (GCC) version 4.3.3 (arm-none-linux-gnueabi)
	compiled by GNU C version 4.3.3, GMP version 4.2.4, MPFR version 2.4.0.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 3b26795e803e1bf90490f3cd7bbab986
COLLECT_GCC_OPTIONS='-v' '-g' '-o' 'build/output/test/test3' '-I' 'src' '-L' 'build/output' '-L/usr/local/toolchain-arm-jaunty.rgs0/lib/' '-L/usr/local/toolchain-arm-jaunty.rgs0/lib/'
 /opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/as -v -I src -meabi=4 -o /tmp/ccdexBHk.o /tmp/ccla2309.s
GNU assembler version 2.19.1 (arm-none-linux-gnueabi) using BFD version (GNU Binutils) 2.19.1
COMPILER_PATH=/opt/toolchain-arm-jaunty.rgs0/bin/../libexec/gcc/arm-none-linux-gnueabi/4.3.3/:/opt/toolchain-arm-jaunty.rgs0/bin/../libexec/gcc/:/opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/
LIBRARY_PATH=/opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/:/opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/:/opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/lib/:/opt/toolchain-arm-jaunty.rgs0/bin/../sysroot/lib/:/opt/toolchain-arm-jaunty.rgs0/bin/../sysroot/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-g' '-o' 'build/output/test/test3' '-I' 'src' '-L' 'build/output' '-L/usr/local/toolchain-arm-jaunty.rgs0/lib/' '-L/usr/local/toolchain-arm-jaunty.rgs0/lib/'
 /opt/toolchain-arm-jaunty.rgs0/bin/../libexec/gcc/arm-none-linux-gnueabi/4.3.3/collect2 --sysroot=/opt/toolchain-arm-jaunty.rgs0/bin/../sysroot --eh-frame-hdr -dynamic-linker /lib/ld-linux.so.3 -X -m armelf_linux_eabi -o build/output/test/test3 -z relro /opt/toolchain-arm-jaunty.rgs0/bin/../sysroot/usr/lib/crt1.o /opt/toolchain-arm-jaunty.rgs0/bin/../sysroot/usr/lib/crti.o /opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/crtbegin.o -L build/output -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -L/opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3 -L/opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc -L/opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/lib -L/opt/toolchain-arm-jaunty.rgs0/bin/../sysroot/lib -L/opt/toolchain-arm-jaunty.rgs0/bin/../sysroot/usr/lib /tmp/ccdexBHk.o -lpaho-mqtt3cs -lpthread -lssl -lcrypto -ldl -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/crtend.o /opt/toolchain-arm-jaunty.rgs0/bin/../sysroot/usr/lib/crtn.o
/usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -g -o build/output/test/test4 src/../test/test4.c -lpaho-mqtt3a -I src -lpthread -L build/output 
/usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -g -o build/output/test/test5 src/../test/test5.c -lpaho-mqtt3as -I src -lpthread -L build/output -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lssl -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lcrypto -ldl
src/../test/test5.c: In function 'main':
src/../test/test5.c:2041: warning: format '%lu' expects type 'long unsigned int', but argument 3 has type 'unsigned int'

________________________________________
From: paho-dev-bounces@xxxxxxxxxxx [paho-dev-bounces@xxxxxxxxxxx] on behalf of Ian Craggs [icraggs@xxxxxxxxxxxxxxxxxxxxxxx]
Sent: Tuesday, April 29, 2014 2:47 PM
To: paho-dev@xxxxxxxxxxx
Subject: Re: [paho-dev] List * handles passed as NULL in  MQTTAsync.c

Hi Jimmy,

the "filter-out" function means use all the source files except the ones
listed.  So SOURCE_FILES_C contains all files except MQTTAsync.c,
MQTTVersion.c and SSLSocket.c, which looks correct to me.

What version of gcc and make are you using for the cross-compile?

Can you attach a complete build log?  I'd like to see if it's using the
right set of files, or if anything else looks odd.

Ian

On 04/29/2014 06:33 PM, Jimmy Johnson wrote:
> Hi Ian,
>
> I built the library with the makefile that was included... Now that I am looking at it more closely maybe this is the problem?
>
> SOURCE_FILES_C = $(filter-out $(srcdir)/MQTTAsync.c $(srcdir)/MQTTVersion.c $(srcdir)/SSLSocket.c, $(SOURCE_FILES))
> SOURCE_FILES_CS = $(filter-out $(srcdir)/MQTTAsync.c $(srcdir)/MQTTVersion.c, $(SOURCE_FILES))
> SOURCE_FILES_A = $(filter-out $(srcdir)/MQTTClient.c $(srcdir)/MQTTVersion.c $(srcdir)/SSLSocket.c, $(SOURCE_FILES))
> SOURCE_FILES_AS = $(filter-out $(srcdir)/MQTTClient.c $(srcdir)/MQTTVersion.c, $(SOURCE_FILES))
>
> It looks like the async client is built and linked with the classic libraries and the classic is built and linked with the async libraries, is this backwards?
>
> Still not sure what the problem is.
>
> Thanks,
> Jimmy
> ________________________________________
> From: paho-dev-bounces@xxxxxxxxxxx [paho-dev-bounces@xxxxxxxxxxx] on behalf of Ian Craggs [icraggs@xxxxxxxxxxxxxxxxxxxxxxx]
> Sent: Friday, April 25, 2014 3:40 PM
> To: paho-dev@xxxxxxxxxxx
> Subject: Re: [paho-dev] List * handles passed as NULL in  MQTTAsync.c
>
> Jimmy,
>
> how did you build the library or program?  MQTTAsync.c and MQTTClient.c
> are not meant to exist in the same program.  You have to pick one
> library (paho-mqtt3c or paho-mqtt3a) or the other.
>
> Ian
>
>
> On 04/25/2014 07:32 PM, Jimmy Johnson wrote:
>> Sure this was taken directly from one of the examples (and modified for ssl) it was exhibiting the same issue:
>>
>> int main(int argc, char* argv[])
>> {
>>       MQTTClient client;
>>       MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer;
>>       int rc;
>>       int ch;
>>       MQTTClient_SSLOptions sslOpts = MQTTClient_SSLOptions_initializer;
>>
>>
>>       conn_opts.ssl = &sslOpts;
>>       sslOpts.trustStore = "/etc/ssl/certs/StartCom_Certification_Authority.pem";
>>
>>       MQTTClient_create(&client, ADDRESS, "serial123", MQTTCLIENT_PERSISTENCE_NONE, NULL);
>>
>>       conn_opts.keepAliveInterval = 20;
>>       conn_opts.cleansession = 1;
>>       conn_opts.password="test";
>>       conn_opts.username= "serial123";
>>
>>       MQTTClient_setCallbacks(client, NULL, connlost, msgarrvd, delivered);
>>
>>       if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS)
>>       {
>>           printf("Failed to connect, return code %d\n", rc);
>>           exit(-1);
>>       }
>>       printf("Subscribing to topic %s as %s\nfor QoS %d\n\n"
>>              "Press Q<Enter> to quit\n\n", argv[1],conn_opts.username, QOS);
>>       MQTTClient_subscribe(client, argv[1], QOS);
>>
>>       do
>>       {
>>           ch = getchar();
>>       } while(ch!='Q' && ch != 'q');
>>
>>       MQTTClient_disconnect(client, 10000);
>>       MQTTClient_destroy(&client);
>>       return rc;
>> }
>>
>> ________________________________________
>> From: paho-dev-bounces@xxxxxxxxxxx [paho-dev-bounces@xxxxxxxxxxx] on behalf of Ian Craggs [icraggs@xxxxxxxxxxxxxxxxxxxxxxx]
>> Sent: Friday, April 25, 2014 8:08 AM
>> To: paho-dev@xxxxxxxxxxx
>> Subject: Re: [paho-dev] List * handles passed as NULL in  MQTTAsync.c
>>
>> Hi Jimmy,
>>
>> can I have a snippet of your application code to show how you are using
>> the client library?
>>
>> Ian
>>
>> On 04/24/2014 11:36 PM, Jimmy Johnson wrote:
>>> Hi Ian,
>>>
>>> I found another possible bug in the C code, and created a possible fix.  Here is what I found:
>>>
>>> My client was making a call to MQTTClient_create() in MQTTClient.c which initalizes it's static instance of the "handles" pointer. When the client actually published a message it was calling an instance of Protocol_processPublication which is located in MQTTAsync.c and using the instance of the static "handles" pointer in that file which had never been initalized since I had originally call MQTTClient_create() in MQTTClient.c to set up the client.  This caused a segfault when it hit the ListFindItem method with handles set as NULL.
>>>
>>> Here is my stack trace:
>>>
>>> #0  0x4002e550 in ListFindItem (aList=0x0, content=0x3c68c,
>>>        callback=0x40035b48 <clientStructCompare>) at src/LinkedList.c:154
>>> #1  0x40035ff0 in Protocol_processPublication (publish=0x306bc,
>>>        client=0x3c68c) at src/MQTTAsync.c:1809
>>> #2  0x400403e8 in MQTTProtocol_handlePublishes (pack=0x306bc, sock=6)
>>>        at src/MQTTProtocolClient.c:275
>>> #3  0x400e5e2c in MQTTClient_cycle (sock=0x41616db4, timeout=1000,
>>>        rc=0x41616db8) at src/MQTTClient.c:1508
>>> #4  0x400e24c4 in MQTTClient_run (n=0x3c4fc) at src/MQTTClient.c:483
>>> #5  0x40189910 in start_thread () from /lib/libpthread.so.0
>>> #6  0x405913ec in clone () from /lib/libc.so.6
>>>
>>> You can see that aList which is a List * is being passed in as NULL (0x0) to ListFindItem after being called from MQTTAsync.c
>>>
>>> My fix was to add a parameter to Protocol_processPublication called handles for both MQTTAsync.c and MQTTClient.c files.
>>>
>>> So
>>>
>>> void Protocol_processPublication(Publish* publish, Clients* client)
>>>
>>> becomes:
>>>
>>> void Protocol_processPublication(Publish* publish, Clients* client, List * handles)
>>>
>>> I then re factored calling methods to include their instance of the handle when making this call.  It seemed to fix everything since the call is no longer relying on a global variable. Oddly enough I did not see this issue when I was compiling and testing under Ubuntu 12.04 on my laptop.  It only started happening only when I cross compiled to my arm platform.  Do you think it will cause any issues?  I am using the library with c++, I don't know if that would make a difference.  I know the docs say that a synchronous client becomes asynchronous when you create callbacks for it, but it doesn't seem to initialize the asynchronous part of the code.
>>>
>>> Thanks for any insight you might have.
>>>
>>> Jimmy
>>>
>>> _______________________________________________
>>> paho-dev mailing list
>>> paho-dev@xxxxxxxxxxx
>>> https://dev.eclipse.org/mailman/listinfo/paho-dev
>> --
>> Ian Craggs
>> icraggs@xxxxxxxxxx                 IBM United Kingdom
>> Committer on Paho, Mosquitto
>>
>> _______________________________________________
>> paho-dev mailing list
>> paho-dev@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/paho-dev
>> _______________________________________________
>> paho-dev mailing list
>> paho-dev@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/paho-dev
> --
> Ian Craggs
> icraggs@xxxxxxxxxx                 IBM United Kingdom
> Committer on Paho, Mosquitto
>
> _______________________________________________
> paho-dev mailing list
> paho-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/paho-dev
> _______________________________________________
> paho-dev mailing list
> paho-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/paho-dev

--
Ian Craggs
icraggs@xxxxxxxxxx                 IBM United Kingdom
Committer on Paho, Mosquitto

_______________________________________________
paho-dev mailing list
paho-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/paho-dev


Back to the top