485 Commits

Author SHA1 Message Date
Marcelo Roberto Jimenez
a15d46e142 Deal with "inline" when "-ansi" compiler option is active.
This mode can be recognized by the macro __STRICT_ANSI__.

From man gcc:

-ansi
 In C mode, this is equivalent to -std=c89. In C++ mode, it is equivalent to
-std=c++98.

 This turns off certain features of GCC that are incompatible with ISO C90
(when compiling C code), or of standard (when compiling code), such as the
asm and typeof keywords, and predefined macros such as unix and vax that
identify the type of system you are using. It also enables the undesirable
and rarely used ISO trigraph feature. For the C compiler, it disables
recognition of style // comments as well as the inline keyword.

 The alternate keywords _ _asm_ _, _ _extension_ _, _ _inline_ _ and
_ _typeof_ _ continue to work despite -ansi. You would not want to use them
in an ISO C program, of course, but it is useful to put them in header files
that might be included in compilations done with -ansi. Alternate predefined
macros such as _ _unix_ _ and _ _vax_ _ are also available, with or without
-ansi.

 The -ansi option does not cause non-ISO programs to be rejected gratuitously.
For that, -pedantic is required in addition to -ansi.

 The macro _ _STRICT_ANSI_ _ is predefined when the -ansi option is used.
Some header files may notice this macro and refrain from declaring certain
functions or defining certain macros that the ISO standard doesn't call for;
this is to avoid interfering with any programs that might use these names for
other things.

 Functions that would normally be built in but do not have semantics defined
by ISO C (such as alloca and ffs) are not built-in functions when -ansi is
used.
(cherry picked from commit da7f3bf1c1fcbbaee48bed464e132ea52aa961ab)
2010-11-16 03:15:42 -02:00
Marcelo Roberto Jimenez
dd2624ebfe Added the convenience function UpnpResolveURL2() to upnptools.c.
This function avoids some unecessary memory allocation.
The memory alloc'd by this function must be freed later by the caller.
(cherry picked from commit 8651174861657b9d99b741b1ffe12ff164284e4e)
2010-11-15 01:02:07 -02:00
Marcelo Roberto Jimenez
5c8d118899 Fixes for list.h and poison.h to be used in C++ code.
- Add list.h and poison.h to Makefile.am;
- list.h cannot use the C++ reserved keyword new;
- Cast void pointers to the proper type;
- Proper C++ pointer arithmetic on poison.h.
2010-11-15 00:07:14 -02:00
Marcelo Roberto Jimenez
eb5db65692 ReadResponseLineAndHeaders() is static. 2010-11-11 21:59:39 -02:00
Fabrice Fontaine
b0cab00ca3 Add GENA_NOTIFICATION_xxx_TIMEOUT variable.
Currently, in notify_send_and_recv function, pupnp waits for
HTTP_DEFAULT_TIMEOUT seconds when trying to send a GENA notification.
When there is a lot of notifications with CPs which was disconnected
without unsusbcribing, all the pupnp threads are blocked on this
timeout. To correct, this issue, this patch adds a new variable,
GENA_NOTIFICATION_SENDING_TIMEOUT, which can be used to lower the
timeout so GENA threads return quickly when writing is impossible. By
the same mean, pupnp waits the CP's answer to the NOTIFY for
HTTP_DEFAULT_TIMEOUT seconds, so this patch adds a new variable,
GENA_NOTIFICATION_ANSWERING_TIMEOUT, to customize this value.
(cherry picked from commit e6c548f57a26ef5e681135cf34ea780b95209be8)
2010-11-11 21:44:10 -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
Marcelo Roberto Jimenez
02d0a48609 Remove commented old code from webserver.c.
(cherry picked from commit 2b30575ca553d9fee9881d9ea2c3caba64d9dce5)
2010-11-11 21:33:58 -02:00
Fabrice Fontaine
6c64b7eeb5 Support for "polling" select in sock_read_write.
Currently, in sock_read_write function, if the timeout is 0, pupnp
realizes a "blocking" select (with an infinite timeout). With this
patch, if timeout is set to 0, pupnp will realize a "polling" select
and returns immediately if it can not read or write on the socket. This
is very useful for GENA notifications when pupnp is trying to send
events to a disconnected Control Point. "Blocking" select can now be
done by putting a negative timeout value.
2010-11-11 21:24:49 -02:00
Stefan Sommerfeld
8418b06bf1 Fixed a typo in upnp/inc/ActionComplete.h. 2010-11-07 19:01:30 -02:00
Stefan Sommerfeld
7b212cadc8 Fix for size_t in template. 2010-11-07 19:01:30 -02:00
Stefan Sommerfeld
818d61abc7 Fixed some typos.
(cherry picked from commit 508b782c795c8063ed42183bc0f94c8cf039aaf5)
2010-11-07 18:59:53 -02:00
Stefan Sommerfeld
a0b0ca1434 Add a simple strndup() implementation for win32.
(cherry picked from commit 38d5e58e22cdbcf094e836e1d27084c20cb6b779)
2010-11-07 18:59:53 -02:00
Stefan Sommerfeld
7d3fc74ff7 Fix for size_t in UpnpString.
(cherry picked from commit ee5bd670d4eeb09bf2ebc0e01a902ebac93aa5b8)
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
d4358a82c5 Fix for inline usage.
(cherry picked from commit 243cd419745ba4db72ce259ba5a2f2e345920682)
2010-11-07 18:59:52 -02:00
Marcelo Roberto Jimenez
09ede373c2 Remove unused parameter bufferLen from GetDescDocumentAndURL().
(cherry picked from commit 853cd32cfe055096597014402535b30c5a8c22bf)
2010-11-07 18:59:52 -02:00
Marcelo Roberto Jimenez
127b123c2c Consistent usage of win32 INVALID_SOCKET and SOCKET_ERROR.
On win32 socket() returns INVALID_SOCKET, which is unsigned,
on error, not -1.

Also, most network functions return SOCKET_ERROR.

This patch tries to make the usage consistent.
(cherry picked from commit f384e54fc68802d5e95688ea02e15d1e85f0b7ea)
2010-11-07 18:59:52 -02:00
Stefan Sommerfeld
4da4ea639f Fixed server port definition.
(cherry picked from commit 9e12768cdbc89af73153c6b402cc7765dcaf6ee7)
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
Stefan Sommerfeld
23b05a7f90 Make notify_send_and_recv() return the appropriate error code.
notify_send_and_recv() was returning the connection fd.
(cherry picked from commit a5fb5edfc935e1dc3c71db1adb8dced47df67a0f)
2010-11-07 18:59:52 -02:00
Marcelo Roberto Jimenez
c683bd90d6 Proper inclusion of inet_pton.h for win32.
(cherry picked from commit 8bd32d330b65f9f09153ec85ae5839dbcbb6052a)
2010-11-07 18:59:52 -02:00
Stefan Sommerfeld
bb48d48977 fixed wrong declaration of inet_ntop4
(cherry picked from commit 00eb52cc85ed99e3ca32acfcb998b71720c34f40)
2010-11-07 18:59:52 -02:00
Marcelo Roberto Jimenez
a6c021226a Fix broken Makefile.am and remove unused file utilall.h.
(cherry picked from commit 9052ca95be2345666d48288cc7b61cda81e6c92f)
2010-11-06 19:42:59 -02:00
Marcelo Roberto Jimenez
b59ec7d838 Fix for "SampleUtil_Initialize was called multiple times!" bug.
Fix for bug introduced in samples code in svn revision 502, commit
git:25c908c558c8e60eb386c155a6b93add447ffec0

Sample device and combo were aborting with the message:
"***** SampleUtil_Initialize was called multiple times!"
(cherry picked from commit ef7edf6cf8a0f1acafdaecaf09b30aaeaac91d10)
2010-11-06 00:46:58 -02:00
Fabrice Fontaine
8e0c92a52a Make multiple SSDP advertisements faster.
Put the loop to send multiple copies of each SSDP advertisements in
ssdp_server.c instead of ssdp_device.c so we have only one call to
imillisleep ( SSDP_PAUSE ) to speed up advertisements.
(cherry picked from commit c65ec8a720cc3c65b4ca173ea7536d03b0652890)
2010-11-05 23:54:04 -02:00
Fabrice Fontaine
56e0fdd438 Removing unused NUM_COPY variable.
Previously, NUM_COPY was used in ssdp_device.c to send multiple copies
of each advertisements but also multiple replies to each M-SEARCH
request. As sending multiple replies is not compliant with HTTPU/MU
spec, NUM_COPY has been set to 1 in an older patch. However, as this
variable is not needed and has been replaced with SSDP_COPY, it has
been removed.
(cherry picked from commit 2d22e997e1ff06ad2b202623d73f4d3f321c6131)
2010-11-05 23:53:55 -02:00
Fabrice Fontaine
b8b5f6a0ef Use SSDP_COPY to send multiple SSDP advertisements.
Currently, SSDP_COPY is used only to send multiple M-SEARCH requests (in
ssdp_ctrlpt.c). With this patch, SSDP_COPY is also used to send multiple
copies of each advertisements packets (in ssdp_device.c).
(cherry picked from commit 96dc968f18c9a2273dc76cdc59dd5438df553b26)
2010-11-05 13:29:35 -02:00
Carl Benson
4d37927c64 patch for taking notice of UPNP_USE_RWLOCK flag in threadutil
By "Carl Benson" <carl.benson@windriver.com>:

I had to do some modifications myself though, because the Android
build system insists on having a file named "util.h" taking precedence
in its include path, libupnp gets confused because of the same filename
in upnp/src/inc/util.h

(hand cherry picked from commit 8e846368e0f0e33a5d42bc56b0c6025a8afd5e78)
2010-11-01 01:11:21 -02:00
Marcelo Roberto Jimenez
499753ba46 Remove the object from the list upon destruction. 2010-10-21 08:29:52 -02:00
Marcelo Roberto Jimenez
224c07de81 Copyright notice. 2010-10-21 08:29:52 -02:00
Marcelo Roberto Jimenez
a00919fe05 .gitignore for unittest/templates/*.pp.c. 2010-10-21 00:52:09 -02:00
Marcelo Roberto Jimenez
3ec269c872 Add some skeleton for unit testing. Start with template objects. 2010-10-21 00:43:33 -02:00
Marcelo Roberto Jimenez
45461f738d Template object for lists. 2010-10-21 00:27:57 -02:00
Marcelo Roberto Jimenez
f94fdc0afb Doxygen and indentation for sock.
(cherry picked from commit cc472bc2cd88c88bdd4b39bfc2e9582fb3ccd886)
2010-10-20 10:12:23 -02:00
Marcelo Roberto Jimenez
dcf2040e45 Doxygen and indentation for miniserver.
(cherry picked from commit 6128296e5f4dcdb3e5b0716f575da07a90d550ba)
2010-10-20 10:12:23 -02:00
Marcelo Roberto Jimenez
80c2b7a82a Indent plus Doxygen in webserver. 2010-10-20 02:09:28 -02:00
Marcelo Roberto Jimenez
c874c62472 Slightly better implementation for ToUpperCase().
(cherry picked from commit 113ebd1f910a3863a0f16ffec2bee27e693d6ba2)
2010-10-20 01:44:56 -02:00
Marcelo Roberto Jimenez
b67c321869 Fix a long date memory leak in webserver.c:StrStr().
(cherry picked from commit bf1450bf81f2a98d89950db0df84e5ae9e99b824)
2010-10-20 01:44:56 -02:00
Marcelo Roberto Jimenez
1cc60c83f4 Bug fix in select of miniserver.c
Fix a bug in miniserver.c, in which maxMiniSock was wrongly declared as
unsigned int and as a result it was beeng set to ((unsigned int)(-1)).
As a result, after beeing incremented, it became zero, and this value
was beeing used in the select() call.

Thanks to Fabrice Fontaine for helping and testing with this issue.
(cherry picked from commit 2bdc9e075e33efa35f49e8a9766e75df9eb91420)
2010-10-19 16:05:38 -02:00
Marcelo Roberto Jimenez
6f9661040f Fix for 100% CPU issue in select() in miniserv.c. I have also removed
the sleep() call, it was just a workaround.

SF Bug Tracker [ 3086852 ] 99% CPU loop in miniserver.c on a non ipv6
system.

Submitted by: Jin ( jin_eld ) - 2010-10-13 19:29:13 UTC

I cross compiled libupnp 1.6.7 for ARM9 using the --disable-ipv6
option, my system is an ipv4 only setup.

I do not know why this problem only appears when running the app in the
background (for instance using nohup &), but then it starts using 99%
CPU.

I traced the problem down to the select() call in miniserver.c in the
RunMiniServer() function. Select returns code 1, but errno is set to
"Socket operation on non-socket", I also see this when running my app
under strace.

I set all ...Sock6 variables to INVALID_SOCKET to make sure that they
do not get added to the FD_SET and the problem is gone.
(cherry picked from commit f74746ff3f06316a37d0359f11a84cb887b0a388)
2010-10-15 12:43:17 -03:00
Marcelo Roberto Jimenez
d3a7912741 New function, sock_close().
(cherry picked from commit 8401a59ed5eb3dff72a283df017a69bc6bf05356)
2010-10-15 12:43:17 -03:00
Marcelo Roberto Jimenez
b6ec42b439 Misplaced declaration of UpnpCloseSocket.
(cherry picked from commit 5b40cfa2720efa15513a43a507a343d4ffbe3953)
2010-10-15 12:43:16 -03:00
Marcelo Roberto Jimenez
6b496561b6 Remove of unused file.
(cherry picked from commit fcda28ba75057f835e5fa92c4e13dbd9edd6d07d)
2010-10-15 12:43:16 -03:00
Marcelo Roberto Jimenez
549ac300f7 Tempplat object for ClientSubscription. 2010-10-04 17:48:51 -03:00
Marcelo Roberto Jimenez
9e77129b87 Fix function prototype. 2010-10-04 16:52:48 -03:00
Marcelo Roberto Jimenez
6d8aa815ea Merge of similar files. 2010-10-04 15:35:59 -03:00
Marcelo Roberto Jimenez
4f5d0e1d70 Merge of similar code. 2010-10-04 13:19:00 -03:00
Marcelo Roberto Jimenez
420c87761a Update build/inc/autoconfig.h and build/inc/upnpconfig.h at configure
time.
(cherry picked from commit a9b5081a084f74e70ab90499b3c44c2ab0950104)
2010-10-04 10:53:33 -03:00
Marcelo Roberto Jimenez
efb5d0cadf Whitespace fix on soaplib.h.
(cherry picked from commit 95f7a7eeef8717b4d04b68cfcc3dddab13a7cff8)
2010-10-02 18:59:07 -03:00
Marcelo Roberto Jimenez
fec0dd041b Remove extra soaplib.h.
(cherry picked from commit ca50c2153e755388b837a16d87e496b7075ee113)
2010-10-02 18:58:53 -03:00