diff mbox

[git,commit] libupnp: move to version 1.6.14 Not OK

Message ID A6EF940D27964F9AA5B3B3B810E12908@JohanW7
State Not Applicable
Headers show

Commit Message

Sagaert Johan March 21, 2012, 1:32 p.m. UTC
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.

login: upnp_init: UpnpRegisterRootDevice failed with code:-119
upnp_init: UpnpSendAdvertisement failed with code: -100
main: upnp_init failed
upnp_cleanup: start
upnp_cleanup: UpnpUnRegisterRootDevice failed with code: -100


This is the snippet from my source code :

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;
	}
	
	SNIP .....




-----Oorspronkelijk bericht-----
Van: buildroot-bounces@busybox.net [mailto:buildroot-bounces@busybox.net] Namens Peter Korsgaard
Verzonden: woensdag 21 maart 2012 13:50
Aan: buildroot@busybox.net
Onderwerp: [Buildroot] [git commit] libupnp: move to version 1.6.14

commit: http://git.buildroot.net/buildroot/commit/?id=bfd26038c5eeac1483387598be82c4c22f463de9
branch: http://git.buildroot.net/buildroot/commit/?id=refs/heads/master

As pointed by Sagaert Johan in the mailing list and further testing version
1.6.15 has some issues.
So move to version 1.6.14 which is far more stable and compliant.

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
---
 ...-no-ipv6.patch => libupnp-1.6.14-no-ipv6.patch} |    0
 package/libupnp/libupnp.mk                         |    2 +-
 2 files changed, 1 insertions(+), 1 deletions(-)

buildroot mailing list
buildroot@busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

Comments

Gustavo Zacarias March 21, 2012, 2:06 p.m. UTC | #1
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.
Sagaert Johan March 21, 2012, 2:25 p.m. UTC | #2
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.
Gustavo Zacarias March 21, 2012, 2:26 p.m. UTC | #3
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.
Sagaert Johan March 21, 2012, 4:24 p.m. UTC | #4
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
Sagaert Johan March 22, 2012, 8:45 p.m. UTC | #5
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.
Gustavo Zacarias March 22, 2012, 11:36 p.m. UTC | #6
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.
Sagaert Johan March 23, 2012, 12:38 p.m. UTC | #7
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.
Gustavo Zacarias March 23, 2012, 12:42 p.m. UTC | #8
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.
Sagaert Johan March 23, 2012, 5:33 p.m. UTC | #9
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
Gustavo Zacarias March 23, 2012, 5:44 p.m. UTC | #10
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.
Arnout Vandecappelle March 24, 2012, 9:20 p.m. UTC | #11
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 mbox

Patch

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 _______________________________________________