Message ID | A6EF940D27964F9AA5B3B3B810E12908@JohanW7 |
---|---|
State | Not Applicable |
Headers | show |
On 2012-03-21 10:32, Sagaert Johan wrote: > Hi > > I have rebuild my small app with the 1.6.15 and also with 1.6.14 : > both fail > (compile but does not work) > > In the past i have tried to use a more recent one and got the same > problem. > I am using httpd from busybox as the http server, and i think its > related with that. > I do not use the internal http server from libupnp since i need httpd > to serve static pages and process cgi-bin. Hi. Out of curiosity, which toolchain/target architecture are you using? Regards.
Hi Target is : Gcc 4.5.3 uClibc 0.9.33 busybox 1.19.4 on ARM EABI (at91sam9260) I tried to get this one running but got the same error(s), finally i reverted back to the 1.6.6 : (...if it works don't fix it ...) ############################################################# # # libupnp # ############################################################# LIBUPNP_VERSION:=1.8.0~svn20100507.orig LIBUPNP_SOURCE:=libupnp4_$(LIBUPNP_VERSION).tar.gz LIBUPNP_SITE:=http://ftp.de.debian.org/debian/pool/main/libu/libupnp4 LIBUPNP_CONF_ENV = ac_cv_lib_compat_ftime=no LIBUPNP_INSTALL_STAGING:=YES LIBUPNP_INSTALL_TARGET:=YES ifeq ($(BR2_INET_IPV6),y) LIBUPNP_CONF_ENV+= CFLAGS="-DIPV6_ENABLED" endif $(eval $(call AUTOTARGETS,package,libupnp)) -----Oorspronkelijk bericht----- Van: buildroot-bounces@busybox.net [mailto:buildroot-bounces@busybox.net] Namens Gustavo Zacarias Verzonden: woensdag 21 maart 2012 15:06 Aan: Sagaert Johan CC: buildroot@busybox.net; 'Peter Korsgaard' Onderwerp: Re: [Buildroot] [git commit] libupnp: move to version 1.6.14 Not OK On 2012-03-21 10:32, Sagaert Johan wrote: > Hi > > I have rebuild my small app with the 1.6.15 and also with 1.6.14 : > both fail > (compile but does not work) > > In the past i have tried to use a more recent one and got the same > problem. > I am using httpd from busybox as the http server, and i think its > related with that. > I do not use the internal http server from libupnp since i need httpd > to serve static pages and process cgi-bin. Hi. Out of curiosity, which toolchain/target architecture are you using? Regards.
On 2012-03-21 10:32, Sagaert Johan wrote: > /******************************************* > * Next, set your root web server directory. > ********************************************/ > ret = UpnpSetWebServerRootDir(WEB_ROOT_DIR); > if(ret != UPNP_E_SUCCESS) > { > printf("upnp_init: UpnpSetWebServerRootDir failed with code: %d\n", > ret); > return ret; > } > > SNIP ..... According to the API docs, UpnpSetWebServerRootDir is only for the internal web server: "UpnpSetWebServerRootDir sets the document root directory for the internal web server. This directory is considered the root directory (i.e. ”/”) of the web server." So i think you're doing something odd there.... Is it really failing you on UpnpInit? I've just made a tiny test case with a powerpc target uclibc 0.9.33 nptl that works just fine up to that. Regards.
Hi No its failing in UpnpRegisterRootDevice, as i understood from checking the error code, the error is caused by some wrong response from the webserver (httpd from busybox). UpnpRegisterRootDevice actually asks the webserver for the upnp device descripter xml file. As far as i remember UpnpSetWebServerRootDir is needed to set the path to the upnp descripter files (xml). Johan -----Oorspronkelijk bericht----- Van: buildroot-bounces@busybox.net [mailto:buildroot-bounces@busybox.net] Namens Gustavo Zacarias Verzonden: woensdag 21 maart 2012 15:26 Aan: Sagaert Johan CC: buildroot@busybox.net; 'Peter Korsgaard' Onderwerp: Re: [Buildroot] [git commit] libupnp: move to version 1.6.14 Not OK On 2012-03-21 10:32, Sagaert Johan wrote: > /******************************************* > * Next, set your root web server directory. > ********************************************/ > ret = UpnpSetWebServerRootDir(WEB_ROOT_DIR); > if(ret != UPNP_E_SUCCESS) > { > printf("upnp_init: UpnpSetWebServerRootDir failed with code: %d\n", > ret); > return ret; > } > > SNIP ..... According to the API docs, UpnpSetWebServerRootDir is only for the internal web server: "UpnpSetWebServerRootDir sets the document root directory for the internal web server. This directory is considered the root directory (i.e. "/") of the web server." So i think you're doing something odd there.... Is it really failing you on UpnpInit? I've just made a tiny test case with a powerpc target uclibc 0.9.33 nptl that works just fine up to that. Regards. /* ============================================================================ Name : easyplusupnpdevice.c Author : js Version : 1.0.0 Copyright : Your copyright notice Description : Registers eusyplus als Upnp service ============================================================================ */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <signal.h> #include <sys/socket.h> #include <sys/ioctl.h> //#include <linux/netdevice.h> //#include <arpa/inet.h> //#include <netinet/in.h> //#include <upnp/upnp.h> #include "getlocalip.h" #include <upnp/upnp.h> int upnp_start(char* hostip); int upnp_cleanup(void); int upnp_callback(Upnp_EventType eventtype, void *event,void *cookie); #define WEB_ROOT_DIR "/opt/www/Upnp" #define DEVICE_DESC_DOC "device.xml" UpnpDevice_Handle g_device_handle; char running=1; // Define the function to be called when ctrl-c (SIGINT) signal is sent to process void signal_callback_handler(int signum) { running=0; // printf("Caught signal %d\n",signum); } int main(void) { int ret=0; /* General purpose error code */ char locaal_ip[32]; g_device_handle=0; // Register signal and signal handler signal(SIGINT, signal_callback_handler); printf("Dummy Upnp V 1.0.1 starting \n"); /************************************************* * First, initialize the library, with the default * HostIP and port numbers. ***************************************************/ ret = UpnpInit(NULL, 0); if(ret != UPNP_E_SUCCESS) { printf("upnp_init: UpnpInit failed with code: %d\n", ret); return ret; } /******************************************* * Next, set your root web server directory. ********************************************/ ret = UpnpSetWebServerRootDir(WEB_ROOT_DIR); if(ret != UPNP_E_SUCCESS) { printf("upnp_init: UpnpSetWebServerRootDir failed with code: %d\n", ret); return ret; } //ons eigen adr bepalen get_local_ip(AF_INET,"eth0",locaal_ip,sizeof(locaal_ip)); /* Call your UPnP intiialization function */ ret = upnp_start(locaal_ip); if(UPNP_E_SUCCESS != ret) { printf("main: upnp_init failed\n"); upnp_cleanup(); return ret; } /* * Your device initialized, you now want to wait for some * user input before you clean up and close the device. */ printf("Upnp Service running...\n"); while (running) { //ons eigen adr bepalen :UpnpGetServerIpAddress veranderd niet automatisch !!!! get_local_ip(AF_INET,"eth0",locaal_ip,sizeof(locaal_ip)); //printf("IP2=%s\n",locaal_ip); if(strcmp(locaal_ip,UpnpGetServerIpAddress())!=0) { printf("Restarting due to IP change\n"); //stop upnp_cleanup(); //ret = UpnpInit2("eth0", 0); deze bij gebruik van upnp 1.8.8 ret = UpnpInit(NULL, 0); if(ret != UPNP_E_SUCCESS) { printf("upnp_init: UpnpInit failed with code: %d\n", ret); return ret; } /******************************************* * Next, set your root web server directory. ********************************************/ ret = UpnpSetWebServerRootDir(WEB_ROOT_DIR); if(ret != UPNP_E_SUCCESS) { printf("upnp_init: UpnpSetWebServerRootDir failed with code: %d\n", ret); return ret; } //restart ret = upnp_start(locaal_ip); if(UPNP_E_SUCCESS != ret) { printf("main: upnp_init failed\n"); upnp_cleanup(); return ret; } printf("Service ReStarted\n"); } sleep(60); } printf("stopping\n"); /* You got some user input, go ahead and clean up. */ ret = upnp_cleanup(); if(UPNP_E_SUCCESS != ret) { printf("main: upnp_cleanup failed\n"); return ret; } printf("main: end\n"); return 0; } /* * Function: upnp_init * * Description: This function initializes the UPnP library, * sets up the internel web server, registers * your root device, and sends out your initial * device advertisements. */ int upnp_start(char* hostip) { int ret = 0; /* General purpose error code */ char descpath[512]; /* Path for your description document */ /* Create your Desc Doc */ sprintf(descpath, "http://%s/Upnp/%s", hostip, DEVICE_DESC_DOC); //sprintf(descpath, "%s/%s", WEB_ROOT_DIR, DEVICE_DESC_DOC); printf("Using descr path: [%s]\n",descpath); /*************************************************** * Register your root device with the Upnp library. ***************************************************/ ret = UpnpRegisterRootDevice(descpath,upnp_callback,&g_device_handle,&g_device_handle); if(ret != UPNP_E_SUCCESS) { printf("upnp_init: UpnpRegisterRootDevice failed with code:%d\n", ret); } /************************************************* * Send advertisements about your device every 120s. * zie upnpapi.c tijd moet groter zijn dan 62 !!! **************************************************/ ret = UpnpSendAdvertisement(g_device_handle, 120); if(ret != UPNP_E_SUCCESS) { printf("upnp_init: UpnpSendAdvertisement failed with code: %d\n", ret); return ret; } return
Hi Gustavo I wonder about this one : http://packages.debian.org/squeeze/libupnp4 I have no clue what the difference would be between the 1.6.x from sourceforge and the 1.8.x from debian. I have a tendency to think that the debian branch would be a more stable one, but thats just a guess... http://ftp.de.debian.org/debian/pool/main/libu/libupnp4/libupnp4_1.8.0~svn20100507.orig.tar.gz Its the one included in the stable debian packages. Johan -----Oorspronkelijk bericht----- Van: buildroot-bounces@busybox.net [mailto:buildroot-bounces@busybox.net] Namens Gustavo Zacarias Verzonden: woensdag 21 maart 2012 15:26 Aan: Sagaert Johan CC: buildroot@busybox.net; 'Peter Korsgaard' Onderwerp: Re: [Buildroot] [git commit] libupnp: move to version 1.6.14 Not OK On 2012-03-21 10:32, Sagaert Johan wrote: > /******************************************* > * Next, set your root web server directory. > ********************************************/ > ret = UpnpSetWebServerRootDir(WEB_ROOT_DIR); > if(ret != UPNP_E_SUCCESS) > { > printf("upnp_init: UpnpSetWebServerRootDir failed with code: %d\n", > ret); > return ret; > } > > SNIP ..... According to the API docs, UpnpSetWebServerRootDir is only for the internal web server: "UpnpSetWebServerRootDir sets the document root directory for the internal web server. This directory is considered the root directory (i.e. "/") of the web server." So i think you're doing something odd there.... Is it really failing you on UpnpInit? I've just made a tiny test case with a powerpc target uclibc 0.9.33 nptl that works just fine up to that. Regards.
On 2012-03-22 17:45, Sagaert Johan wrote: > Hi Gustavo > > I wonder about this one : http://packages.debian.org/squeeze/libupnp4 > I have no clue what the difference would be between the 1.6.x from > sourceforge and the 1.8.x from debian. > > I have a tendency to think that the debian branch would be a more > stable one, but thats just a guess... > > > > http://ftp.de.debian.org/debian/pool/main/libu/libupnp4/libupnp4_1.8.0~svn20100507.orig.tar.gz > > Its the one included in the stable debian packages. > > Johan Hi. Me neither, but there's been a new libupnp release upstream just yesterday (1.6.16). I'll give it a spin here to see how it behaves. Regards.
Hi Gustavo I have built the 1.8 branch from debian i rebuild my app and it still works. The 1.6.14 rease however breaks my app. UpnpRegisterRootDevice,and UpnpRegisterRootDevice2 (using URL) both return UPNP_E_BAD_HTTPMSG. The upnp httpparser seems to disagree on the http headers sent by httpd (busybox 1.19.4). (parser_append returns PARSE_FAILURE.) I did not test another http server. So i stay with the debian release (1.8.x). Johan -----Oorspronkelijk bericht----- Van: buildroot-bounces@busybox.net [mailto:buildroot-bounces@busybox.net] Namens Gustavo Zacarias Verzonden: vrijdag 23 maart 2012 0:37 Aan: Sagaert Johan CC: buildroot@busybox.net Onderwerp: Re: [Buildroot] [git commit] libupnp: move to version 1.6.14 Not OK : what about 1.8.x ? On 2012-03-22 17:45, Sagaert Johan wrote: > Hi Gustavo > > I wonder about this one : http://packages.debian.org/squeeze/libupnp4 > I have no clue what the difference would be between the 1.6.x from > sourceforge and the 1.8.x from debian. > > I have a tendency to think that the debian branch would be a more > stable one, but thats just a guess... > > > > http://ftp.de.debian.org/debian/pool/main/libu/libupnp4/libupnp4_1.8.0 > ~svn20100507.orig.tar.gz > > Its the one included in the stable debian packages. > > Johan Hi. Me neither, but there's been a new libupnp release upstream just yesterday (1.6.16). I'll give it a spin here to see how it behaves. Regards.
On 2012-03-23 09:38, Sagaert Johan wrote: > Hi Gustavo > > I have built the 1.8 branch from debian i rebuild my app and it still > works. > The 1.6.14 rease however breaks my app. > > UpnpRegisterRootDevice,and UpnpRegisterRootDevice2 (using URL) both > return UPNP_E_BAD_HTTPMSG. > > The upnp httpparser seems to disagree on the http headers sent by > httpd (busybox 1.19.4). > (parser_append returns PARSE_FAILURE.) > I did not test another http server. > > So i stay with the debian release (1.8.x). > > Johan Hi Johan. Just tested 1.6.16 and it's not playing too well with ushare either. Can you send your package for Debian's 1.8.x so i can test it? I'd rather avoid a fork (which it probably is) but it seems original upstream isn't working that great even though it's still doing new releases. Regards.
Hi Gustavo >Hi Johan. >Just tested 1.6.16 and it's not playing too well with ushare either. >can you send your package for Debian's 1.8.x so i can test it? >I'd rather avoid a fork (which it probably is) but it seems original upstream isn't working that great even though it's still >>doing new releases. >Regards. I have sent them to you as attachements, did you get them ? I did some experiments, i moved the xml descriptor files to an external http server (microsoft iis ) With the files served from IIS upnp1.6.14 seems to work, so this confirms that the http header sent by busybox is rejected by libupnp1.6.14 Its clear that busybox does not add the correct content header when requesting an xml file from the server. Some network sniffing results : (Should this be forwarded to the busybox maintainers ? I don't like to subscribe to yet another list ...) //this is the http request from libupnp to my IIS server Frame: Number = 76, Captured Frame Length = 263, MediaType = ETHERNET + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D4-85-64-09-34-E7],SourceAddress:[20-74-01-00-01-24] + Ipv4: Src = 192.168.1.104, Dest = 192.168.1.102, Next Protocol = TCP, Packet ID = 9360, Total IP Length = 249 + Tcp: Flags=...AP..., SrcPort=49974, DstPort=HTTP(80), PayloadLen=197, Seq=894946028 - 894946225, Ack=3193555768, Win=2920 (scale factor 0x1) = 5840 - Http: Request, GET /Upnp/device.xml Command: GET + URI: /Upnp/device.xml ProtocolVersion: HTTP/1.1 Host: 192.168.1.102 DATE: Thu, 01 Jan 1970 08:04:50 GMT Connection: close UserAgent: Linux/2.6.36.1Apexsystems, UPnP/1.0, Portable SDK for UPnP devices/1.6.14 HeaderEnd: CRLF //IIS response Frame: Number = 64, Captured Frame Length = 2437, MediaType = ETHERNET + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[20-74-01-00-01-24],SourceAddress:[D4-85-64-09-34-E7] + Ipv4: Src = 192.168.1.102, Dest = 192.168.1.104, Next Protocol = TCP, Packet ID = 27873, Total IP Length = 2423 + Tcp: Flags=...AP..F, SrcPort=HTTP(80), DstPort=54797, PayloadLen=2371, Seq=1781580870 - 1781583242, Ack=2048970879, Win=260 (scale factor 0x8) = 66560 - Http: Response, HTTP/1.1, Status: Ok, URL: /Upnp/device.xml ProtocolVersion: HTTP/1.1 StatusCode: 200, Ok Reason: OK + ContentType: text/xml Last-Modified: Mon, 16 Jan 2012 15:16:54 GMT Accept-Ranges: bytes ETag: "0f713e161d4cc1:0" Server: Microsoft-IIS/7.5 XPoweredBy: ASP.NET Date: Fri, 23 Mar 2012 17:03:43 GMT Connection: close ContentLength: 2106 HeaderEnd: CRLF - payload: HttpContentType = text/xml - Xml: version="1.0" XmlPropertiesInitiator: + XMLDecl: XmlElement:<{xml directive}> + Element: XmlElement:<root> //request using my IE browser Frame: Number = 252, Captured Frame Length = 619, MediaType = ETHERNET + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[20-74-01-00-01-24],SourceAddress:[D4-85-64-09-34-E7] + Ipv4: Src = 192.168.1.102, Dest = 192.168.1.104, Next Protocol = TCP, Packet ID = 28654, Total IP Length = 605 + Tcp: Flags=...AP..., SrcPort=2405, DstPort=HTTP(80), PayloadLen=565, Seq=3687406579 - 3687407144, Ack=3178967085, Win=16425 (scale factor 0x2) = 65700 - Http: Request, GET /Upnp/device.xml Command: GET + URI: /Upnp/device.xml ProtocolVersion: HTTP/1.1 Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */* Accept-Language: nl-BE UserAgent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; Tablet PC 2.0) UA-CPU: AMD64 Accept-Encoding: gzip, deflate If-Modified-Since: Thu, 22 Mar 2012 15:49:18 GMT; length=2106 Host: 192.168.1.104 Connection: Keep-Alive + Cookie: ui_language=en_US HeaderEnd: CRLF //response (header only) from httpd busybox Frame: Number = 316, Captured Frame Length = 259, MediaType = ETHERNET + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D4-85-64-09-34-E7],SourceAddress:[20-74-01-00-01-24] + Ipv4: Src = 192.168.1.104, Dest = 192.168.1.102, Next Protocol = TCP, Packet ID = 5937, Total IP Length = 245 + Tcp: Flags=...AP..., SrcPort=HTTP(80), DstPort=2405, PayloadLen=205, Seq=3178967085 - 3178967290, Ack=3687407144, Win=3485 (scale factor 0x1) = 6970 - Http: Response, HTTP/1.0, Status: Ok, URL: /Upnp/device.xml ProtocolVersion: HTTP/1.0 StatusCode: 200, Ok Reason: OK + ContentType: application/octet-stream Date: Thu, 01 Jan 1970 08:07:16 GMT Connection: close Accept-Ranges: bytes Last-Modified: Mon, 16 Jan 2012 15:16:54 GMT ContentLength: 2106 HeaderEnd: CRLF //request with firefox Frame: Number = 31, Captured Frame Length = 365, MediaType = ETHERNET + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[20-74-01-00-01-24],SourceAddress:[D4-85-64-09-34-E7] + Ipv4: Src = 192.168.1.102, Dest = 192.168.1.104, Next Protocol = TCP, Packet ID = 29443, Total IP Length = 351 + Tcp: Flags=...AP..., SrcPort=2425, DstPort=HTTP(80), PayloadLen=311, Seq=3322553960 - 3322554271, Ack=2603988782, Win=16425 (scale factor 0x2) = 65700 - Http: Request, GET /Upnp/device.xml Command: GET + URI: /Upnp/device.xml ProtocolVersion: HTTP/1.1 Host: 192.168.1.104 UserAgent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20100101 Firefox/11.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: nl,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive HeaderEnd: CRLF //response (header only) from busybox httpd Frame: Number = 91, Captured Frame Length = 259, MediaType = ETHERNET + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D4-85-64-09-34-E7],SourceAddress:[20-74-01-00-01-24] + Ipv4: Src = 192.168.1.104, Dest = 192.168.1.102, Next Protocol = TCP, Packet ID = 13446, Total IP Length = 245 + Tcp: Flags=...AP..., SrcPort=HTTP(80), DstPort=2425, PayloadLen=205, Seq=2603988782 - 2603988987, Ack=3322554271, Win=3456 (scale factor 0x1) = 6912 - Http: Response, HTTP/1.0, Status: Ok, URL: /Upnp/device.xml ProtocolVersion: HTTP/1.0 StatusCode: 200, Ok Reason: OK + ContentType: application/octet-stream Date: Thu, 01 Jan 1970 08:11:12 GMT Connection: close Accept-Ranges: bytes Last-Modified: Mon, 16 Jan 2012 15:16:54 GMT ContentLength: 2106 HeaderEnd: CRLF
On 2012-03-23 14:33, Sagaert Johan wrote: > Hi > > Gustavo > > I have sent them to you as attachements, did you get them ? > > > I did some experiments, i moved the xml descriptor files to an > external http server (microsoft iis ) > With the files served from IIS upnp1.6.14 seems to work, so this > confirms that the http header sent by busybox is rejected by > libupnp1.6.14 > > Its clear that busybox does not add the correct content header when > requesting an xml file from the server. > Some network sniffing results : > > (Should this be forwarded to the busybox maintainers ? I don't like > to subscribe to yet another list ...) Hi Johan. Didn't get much time to play with Debian's libupnp, the whole thing looks tangled, they seemed to have forked circa 1.6.6 and went their own way. It seems that busybox httpd is returning the generic (octet-stream) mime type, did you try configuring .xml to report the correct type back? In httpd.conf it should be: .xml:application/xml Regards.
On Friday 23 March 2012 18:44:49 Gustavo Zacarias wrote: > Didn't get much time to play with Debian's libupnp, the whole thing > looks tangled, they seemed to have forked circa 1.6.6 and went their own > way. They haven't gone their own way, there just haven't been any real updates to Debian's libupnp in the last two years [1][2] - 1.6.7 was released after the last Debian release (minus one small packaging fix). Regards, Arnout [1] http://packages.debian.org/changelogs/pool/main/libu/libupnp/current/changelog [2] http://packages.debian.org/changelogs/pool/main/libu/libupnp4/current/changelog
diff --git a/package/libupnp/libupnp-1.6.15-no-ipv6.patch b/package/libupnp/libupnp-1.6.14-no-ipv6.patch similarity index 100% rename from package/libupnp/libupnp-1.6.15-no-ipv6.patch rename to package/libupnp/libupnp-1.6.14-no-ipv6.patch diff --git a/package/libupnp/libupnp.mk b/package/libupnp/libupnp.mk index 1fa07ca..5ac68c3 100644 --- a/package/libupnp/libupnp.mk +++ b/package/libupnp/libupnp.mk @@ -4,7 +4,7 @@ # ############################################################# -LIBUPNP_VERSION = 1.6.15 +LIBUPNP_VERSION = 1.6.14 LIBUPNP_SOURCE = libupnp-$(LIBUPNP_VERSION).tar.bz2 LIBUPNP_SITE = http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/project/pupnp/pupnp/libUPnP%20$(LIBUPNP_VERSION) LIBUPNP_CONF_ENV = ac_cv_lib_compat_ftime=no _______________________________________________