38 Commits

Author SHA1 Message Date
Marcelo Roberto Jimenez
ab27615855 Removes C++ style comments. 2010-11-16 11:57:37 -02:00
Marcelo Roberto Jimenez
eb5db65692 ReadResponseLineAndHeaders() is static. 2010-11-11 21:59:39 -02:00
Fabrice Fontaine
8811bf7ede Add --disable-blocking-tcp-connections flag.
Currently, pupnp is using a blocking connect to sends GENA
notifications. As a result, when there is a lot of notifications with
CPs which were disconnected without unsusbcribing, all the pupnp
threads are blocked for 20s (timeout). To correct this issue, this
patch replace the call to connect with a call to private_connect and add
a compilation flag to disable blocking TCP connections, so if we are not
able to connect to the CP, the notification is lost.
(cherry picked from commit 32cffb5bb55a650b1eb962c6fe2e58e6bf4fe2c5)
2010-11-11 21:43:55 -02:00
Stefan Sommerfeld
818d61abc7 Fixed some typos.
(cherry picked from commit 508b782c795c8063ed42183bc0f94c8cf039aaf5)
2010-11-07 18:59:53 -02:00
Stefan Sommerfeld
51bf17911a Fix for size_t related warnings.
(cherry picked from commit fcb5e7c438d5787ea34802bdb458c0bb52ed69ba)
2010-11-07 18:59:52 -02:00
Stefan Sommerfeld
0c1ea1e61a Fix for mixed usage of SOCKET and int.
(cherry picked from commit 4b47e6a51d9c7049a862695b68de75699e023551)
2010-11-07 18:59:52 -02:00
Marcelo Roberto Jimenez
b6ec42b439 Misplaced declaration of UpnpCloseSocket.
(cherry picked from commit 5b40cfa2720efa15513a43a507a343d4ffbe3953)
2010-10-15 12:43:16 -03:00
Fabrice Fontaine
5ead3f6fee Add Content-Language iff Accept-Language
Add Content-Language header in the response if and only if there is an Accept-Language header in the request.

Manually ported from revision d2238615e347c45c6abd255597d304cf50b763b5.
2010-09-21 16:43:59 -03:00
Fabrice Fontaine
82beb315c2 Addition of WEB_SERVER_CONTENT_LANGUAGE parameter
This patch adds the WEB_SERVER_CONTENT_LANGUAGE parameter so the user can specify
the language used by the device during Description and Presentation steps of UPnP
through the HTTP CONTENT-LANGUAGE header.
By default, the WEB_SERVER_CONTENT_LANGUAGE is an empty string so no
CONTENT-LANGUAGE is added.
(cherry picked from commit 2fcbe6df52265576ad6bfc902541612ca89f30d4)
2010-09-21 08:50:18 -03:00
David Hoeung
c55eeccb67 Timeout for TCP connect
Hi,

I've made some modification to the libupnp v1.6.5
I've add a timeout for each TCP connect.

It is very useful when an UPnP device stop working and do not accept
connection for an UPnP action.

Modifications are only located in
upnp/src/genlib/net/http/httpreadwrite.c

For every TCP connection, I set the socket to non-blocking, perform
connect,
check result and wait during a timeout if necessary, then reset the
socket to blocking.

Please see this patch in attached file.

I hope it helps.

Regards,

David Hoeung
Consultant Extia
Orange Labs R&D

----
(cherry picked from commit 67009170d1b3953161d9c4b948d54946123d2d92)
2010-09-11 00:20:11 -03:00
Marcelo Roberto Jimenez
64dedf72a8 Using UpnpReadHttpGet to download large files causes the application to
crash. This happens when the file being downloaded exceeds the device
memory - entirely possible when transferring video files.
The programmatic cause is that the logic implemented in the function
http_ReadHttpGet (which UpnpReadHttpGet calls) reads the entire file
into memory. The fix modifies the existing logic to discard data after
it's been read; there's no reason to keep it around since the caller
of UpnpReadHttpGet already has a copy of it.

This issue exists in 1.6.6 as well as the latest sources.

Patch submitted by Chandra (inactiveneurons).
(cherry picked from commit 4657e577662aa5136d63ebbb35d419a895e28c7b)
2010-09-07 22:49:34 -03:00
Marcelo Roberto Jimenez
a3efd63c5f In the latest sources, http_RequestAndResponse and other methods that
use connect() are broken. More specifically, connect() in these methods
is returning with an EINVAL. The programatic cause is that the address_len
argument passed to connect() is different in IPV4 vs IPV6 (as described in:
http://www.opengroup.org/onlinepubs/009695399/functions/connect.html).
The current code always uses the IPV6 size. The fix modifies each use of
connect() to use the correct size based on the address family being used.

Patch submitted by Chandra (inactiveneurons).
(cherry picked from commit 21660334e420382625aa145eeaf6d60b38d328aa)
2010-09-07 22:49:34 -03:00
Marcelo Roberto Jimenez
943483e8b7 UpnpInet.h is now the only place where winsock2.h and Ws2tcpip.h are included.
git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@455 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2008-07-21 22:42:54 +00:00
Marcelo Roberto Jimenez
654363468a Debug code for http_RecvMessage().
git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@448 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2008-07-10 03:55:07 +00:00
Marcelo Roberto Jimenez
4578ff8452 Fixed a buffer overflow due to a bug in the calculation of the
CONTENT-TYPE header line size, the length was beeing calculated with
the wrong string, there was a missing colon.


git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@434 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2008-06-11 23:22:08 +00:00
Marcelo Roberto Jimenez
35db3e9bba Header file reordering and sanity. White space patch.
git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@384 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2008-05-23 21:55:04 +00:00
Marcelo Roberto Jimenez
2e4a96f034 Merged Charles Nepveu's IPv6 work. libupnp now is IPv6 enabled.
git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@358 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2008-05-02 17:04:22 +00:00
Marcelo Roberto Jimenez
7206e80127 Start of 1.8.x development. Sorry for the big commit, but in fact it should have been bigger.
The fact that we now have an active developer on branch ipv6 made me do this before I would like to.
The idea here is to hide libupnp internal data structures from the outside world so that
developers can be free to change them without breaking the interface. There is still some work to do
before a formal release, but the samples (device and control point) should be working.


git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@353 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2008-04-26 01:20:09 +00:00
Marcelo Roberto Jimenez
0b39b2ad6c * SF Bug Tracker [ 1902668 ] Cannot compile on MSVC
Submitted By Luke Kim - nereusuj
Version 1.6.5 cannot be compiled because of some changes in 1.6.3.
MSVC does not support stdint.h, gettimeofday(), sys/param.h, const int
variables in array size and Windows does not define _WINDOWS_ but define
_WINDOWS.
* MSVC does not understand "const int"'s as declarators of array
dimensions, we must use #define'd constants.
* Use WIN32 instead of _WINDOWS_ or _WINDOWS.



git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@331 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2008-03-09 01:16:58 +00:00
Marcelo Roberto Jimenez
851cfbc4db Some rework of http_SendMessage(), no change in functionality. Mostly white spaces.
git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@246 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2007-11-13 04:14:17 +00:00
Marcelo Roberto Jimenez
fd80e5a8ff Slightly better debug messages and lots of white spaces.
git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@225 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2007-10-26 13:21:59 +00:00
Marcelo Roberto Jimenez
6455ac6eea Changed the calls to virtualDirCallback.open(filename, UPNP_WRITE)
to (virtualDirCallback.open)(filename, UPNP_WRITE) (notice the
parenthesis) due to a change in glibc that produces compilation
errors.


git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@223 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2007-09-01 16:58:58 +00:00
Marcelo Roberto Jimenez
81635d74c1 * More MSVC fixes, using XINLINE instead of inline, MSVC has troubles
with inline. Thanks to David Maass for reporting.
* Changed XINLINE to UPNP_INLINE.
* Lots of white space changes.



git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@192 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2007-05-23 13:20:55 +00:00
Marcelo Roberto Jimenez
2c1dba2942 - Fixed a bug in UpnpPrintf, function could call va_start() and return
befor calling va_end().

- Removed all uses of the DBGONLY(x) macro. A static inline empty
function now is used and the compiler takes care of optimizing it out.



git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@185 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2007-05-18 13:31:21 +00:00
Marcelo Roberto Jimenez
4ceb6c67d1 * EXPORT_SPEC missing on some declarations in ixml/inc/ixml.h.
Thanks to David Maass.

* sizeof is unsigned, so %zu is more adequate than %zd.

* Using an invented printf directive PRIzu that on MSVC
expands to "lu", and on normal C99 compilers expands to "zu".

* Rewrote raw_find_str. Now it no longer uses strcasestr(), but it
transforms the first input buffer into lowercase.



git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@184 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2007-05-16 02:02:16 +00:00
Marcelo Roberto Jimenez
28799f26c9 [pupnp-devel] Type mixup on x86_64 causes UPNP_E_OUTOF_MEMORY
Submitted By: Glen Masgai
after an UpnpSendActionAsync() for example, i get UPNP_E_OUTOF_MEMORY
in the callback using 1.4.4 on a x86_64 system. This happens in
http_MakeMessage(), which in some cases get called with wrong types
(int instead of size_t) in combination with format "b" and "Q".
The attached patch should fix this.


git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@166 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2007-04-28 18:42:14 +00:00
Marcelo Roberto Jimenez
948c959be5 Case insensitive comparison in raw_find_str() (httpparser.c) as
suggested by Craig Nelson in SF Tracker [ 1689382 ] DLINK DIR-625 patch.


git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@158 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2007-04-19 13:05:33 +00:00
Marcelo Roberto Jimenez
286a45d4ad * SF Tracker [ 1652827 ] UpnpRegisterRootDevice returned -104
Submitted By: Michael Andersen - miwer

	Issue was found to be related to sizeof (size_t) != sizeof (int)
	on AMD64 systems. Emil Ljungdahl's AMD64 patch has been applied along
	with some other fixes. Original user report follows:

	When I run upnpd I get the above mentioned error (UPNP_E_OUTOF_MEMORY).
	I've tried with 1.4.1 and 1.4.2-RC3, it's the same. I don't understand why,
	because I have plenty of RAM, and I even tried closing some applications,
	but it didn't help.

	$ upnpd eth1 br0

	The following is logged in the /var/log/messages:
	Feb 6 01:33:47 server upnpd[6933]: Error registering the root device with
	descDocUrl: http://192.168.0.1:49152/gatedesc.xml
	Feb 6 01:33:47 server upnpd[6933]: UpnpRegisterRootDevice returned -104


	I tried enabling debugging and it looks like it cannot allocate memory
	through the membuffer_append function. It's wierd because it's only a few
	bytes.

	Please note, that I enabled some extra debugging lines that were commented,
	in order to get more information. See attached files.



git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@154 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2007-04-17 03:55:20 +00:00
Marcelo Roberto Jimenez
bdda54a66b Fix for 64 bit machines.
git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@152 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2007-03-13 17:46:26 +00:00
Oxy
c3060e0d0b typedef modifications for use with Borland Builder
git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@141 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2007-03-03 14:36:58 +00:00
Oxy
2ac3819f8c typedefs corrected, made MS VC++ specific to fix problems of that compiler
git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@140 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2007-03-02 13:53:08 +00:00
Oxy
0d451c9c8e (long long) cast replaced by a generic data type ulong64 that can be defined separately for every used system/compiler (did not work with VC++)
git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@139 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2007-03-01 10:08:04 +00:00
Marcelo Roberto Jimenez
bbd16d75ed Not a comment.
git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@138 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2007-02-17 02:18:43 +00:00
Marcelo Roberto Jimenez
08834bf0f0 32/64 bits portability issues on *printf.
Use %zd for size_t, and cast to (long long) for off_t.


git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@129 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2007-02-09 19:54:22 +00:00
Marcelo Roberto Jimenez
f64c539395 SF Tracker [ 1634922 ] Support for large files (>= 2 GiB), part 2
Submitted By: Jonathan - no_dice
Summary: This patch hopefully fixes the remaining types and related
code to enable files >= 2 GiB to be streamed. Jonathan claims to have
tested this with a patched version of ushare-0.9.8 and a D-Link DSM-520.



git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@121 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2007-01-23 13:22:52 +00:00
Marcelo Roberto Jimenez
1d9e8712b7 Thorough revision of every call of http_MakeMessage() due to a bug introduced
in rev.79: largefile patch added.

http_MakeMessage() has a worst than brain damaged "printf" like interface.
In rev.79, the "N" format parameter must be an off_t. Every call of this
function with an "N" format parameter and an int passed on the stack 
would fail terribly.

Not every place I touched had a bug, but to review the format and keep my
sanity, I had to format it properly.



git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@96 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2006-12-23 18:38:00 +00:00
Oxy
1716c7a10d largefile patch added
git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@79 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2006-08-17 05:17:50 +00:00
Marcelo Roberto Jimenez
89e7a40fcc Removing unnecessary additional directory level.
git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@29 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2006-07-04 02:44:17 +00:00