7
gSOAP XML Web services tools
8
Copyright (C) 2000-2007, Robert van Engelen, Genivia Inc., All Rights Reserved.
9
This part of the software is released under one of the following licenses:
10
GPL, the gSOAP public license, or Genivia's license for commercial use.
11
--------------------------------------------------------------------------------
14
Wind River Systems, Inc., for the following additions (marked WR[...]):
16
--------------------------------------------------------------------------------
19
The contents of this file are subject to the gSOAP Public License Version 1.3
20
(the "License"); you may not use this file except in compliance with the
21
License. You may obtain a copy of the License at
22
http://www.cs.fsu.edu/~engelen/soaplicense.html
23
Software distributed under the License is distributed on an "AS IS" basis,
24
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
25
for the specific language governing rights and limitations under the License.
27
The Initial Developer of the Original Code is Robert A. van Engelen.
28
Copyright (C) 2000-2007, Robert van Engelen, Genivia Inc., All Rights Reserved.
29
--------------------------------------------------------------------------------
32
This program is free software; you can redistribute it and/or modify it under
33
the terms of the GNU General Public License as published by the Free Software
34
Foundation; either version 2 of the License, or (at your option) any later
37
This program is distributed in the hope that it will be useful, but WITHOUT ANY
38
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
39
PARTICULAR PURPOSE. See the GNU General Public License for more details.
41
You should have received a copy of the GNU General Public License along with
42
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
43
Place, Suite 330, Boston, MA 02111-1307 USA
45
Author contact information:
46
engelen@genivia.com / engelen@acm.org
47
--------------------------------------------------------------------------------
48
A commercial use license is available from Genivia, Inc., contact@genivia.com
49
--------------------------------------------------------------------------------
52
#ifdef WITH_SOAPDEFS_H
53
# include "soapdefs.h" /* include user-defined stuff */
66
#ifndef SOAP_FMAC1 /* stdsoap2.h declaration macro */
70
#ifndef SOAP_FMAC2 /* stdsoap2.h declaration macro */
74
#ifndef SOAP_FMAC3 /* (de)serializer declaration macro */
78
#ifndef SOAP_FMAC3S /* string converter for (de)serializer declaration macro */
79
# define SOAP_FMAC3S SOAP_FMAC3
82
#ifndef SOAP_FMAC4 /* (de)serializer declaration macro */
86
#ifndef SOAP_FMAC4S /* string converter for (de)serializer declaration macro */
87
# define SOAP_FMAC4S SOAP_FMAC4
90
#ifndef SOAP_FMAC5 /* stub/skeleton declaration macro */
94
#ifndef SOAP_FMAC6 /* stub/skeleton declaration macro */
98
#ifndef SOAP_CMAC /* class declaration macro */
102
#ifndef SOAP_NMAC /* namespace table declaration macro */
106
#ifndef SOAP_SOURCE_STAMP
107
# define SOAP_SOURCE_STAMP(str)
110
/* gSOAP 2.7.4 and higher: fast look-aside buffering is stable */
123
# error "Cannot build WITH_LEAN code WITH_COOKIES enabled"
130
#if defined(__vxworks) || defined(__VXWORKS__)
142
# define UNDER_CE _WIN32_WCE
171
#if defined(__palmos__) || defined(PALM_GCC) || defined(__PALMOS_TRAPS__)
183
#if defined(__digital__) && defined(__unix__)
198
# ifndef HAVE_OPENSSL_SSL_H
203
# if defined(UNDER_CE)
204
# define WITH_NOEMPTYSTRUCT
207
# elif defined(WIN32)
208
# define WITH_NOEMPTYSTRUCT
209
# define HAVE_STRRCHR
213
# define HAVE_STRTOUL
214
# define HAVE_SYS_TIMEB_H
218
# define SOAP_LONG_FORMAT "%I64d"
219
# define SOAP_ULONG_FORMAT "%I64u"
220
# elif defined(CYGWIN)
221
# define HAVE_STRRCHR
225
# define HAVE_STRTOUL
226
# define HAVE_SYS_TIMEB_H
229
# define HAVE_GMTIME_R
230
# define HAVE_LOCALTIME_R
233
# elif defined(__APPLE__)
234
# define HAVE_STRRCHR
238
# define HAVE_STRTOUL
240
# define HAVE_GMTIME_R
241
# define HAVE_LOCALTIME_R
245
# elif defined(_AIX43)
246
# define HAVE_STRRCHR
250
# define HAVE_STRTOUL
251
# define HAVE_SYS_TIMEB_H
254
# define HAVE_GMTIME_R
255
# define HAVE_LOCALTIME_R
258
# elif defined(_AIX41)
259
# define HAVE_STRRCHR
263
# define HAVE_STRTOUL
264
# define HAVE_SYS_TIMEB_H
267
# elif defined(HP_UX)
268
# define HAVE_STRRCHR
272
# define HAVE_STRTOUL
273
# define HAVE_SYS_TIMEB_H
276
# define HAVE_GMTIME_R
277
# define HAVE_LOCALTIME_R
280
# elif defined(FREEBSD) || defined(__FreeBSD__)
281
# define HAVE_STRRCHR
285
# define HAVE_STRTOUL
286
# define HAVE_STRTOLL
287
# define HAVE_STRTOULL
288
# define HAVE_GETTIMEOFDAY
290
# define HAVE_GMTIME_R
291
# define HAVE_LOCALTIME_R
294
# define SOAP_LONG_FORMAT "%qd"
295
# define SOAP_ULONG_FORMAT "%qu"
296
# elif defined(__VMS)
297
# define HAVE_STRRCHR
301
# define HAVE_STRTOUL
302
# define HAVE_SYS_TIMEB_H
305
# define HAVE_GMTIME_R
306
# define HAVE_LOCALTIME_R
309
# elif defined(__GLIBC__) || defined(__GNU__)
310
# define HAVE_STRRCHR
314
# define HAVE_STRTOUL
315
# define HAVE_STRTOLL
316
# define HAVE_STRTOULL
317
# define HAVE_SYS_TIMEB_H
320
# define HAVE_GMTIME_R
321
# define HAVE_LOCALTIME_R
326
# elif defined(TRU64)
327
# define HAVE_STRRCHR
331
# define HAVE_STRTOUL
332
# define HAVE_GETTIMEOFDAY
333
# define HAVE_SYS_TIMEB_H
335
# define HAVE_GMTIME_R
336
# define HAVE_LOCALTIME_R
337
# define __USE_STD_IOSTREAM
340
# define SOAP_LONG_FORMAT "%ld"
341
# define SOAP_ULONG_FORMAT "%lu"
342
# elif defined(MAC_CARBON)
344
# define HAVE_STRRCHR
348
# define HAVE_STRTOUL
351
# define HAVE_GETHOSTBYNAME_R
352
# define HAVE_GMTIME_R
353
# define HAVE_LOCALTIME_R
358
# define HAVE_STRTOD /* strtod() is defined in palmFunctions.h */
359
# include <stdlib.h> /* Needs to be included before unix headers */
360
# include <sys_types.h>
361
# define IGNORE_STDIO_STUBS
362
# include <StdIOPalm.h>
363
# define O_NONBLOCK FNONBIO
364
# include <sys_socket.h>
365
# include "palmFunctions.h"
366
# elif defined(SYMBIAN)
368
# define WITH_NONAMESPACES
369
# define HAVE_STRTOD /* use STRTOD since sscanf doesn't seem to work */
371
# include <sys/ioctl.h>
372
# elif defined(VXWORKS)
373
# define HAVE_STRRCHR
377
# define HAVE_STRTOUL
378
# define HAVE_PGMTIME_R
379
# define HAVE_PLOCALTIME_R
381
# elif defined(OS390)
382
# define HAVE_STRRCHR
386
# define HAVE_STRTOUL
387
# define HAVE_SYS_TIMEB_H
390
# define HAVE_GMTIME_R
391
# define HAVE_LOCALTIME_R
394
# elif defined(AS400)
395
# define HAVE_STRRCHR
399
# define HAVE_STRTOUL
400
# define HAVE_SYS_TIMEB_H
403
# define HAVE_GMTIME_R
404
# define HAVE_LOCALTIME_R
407
# elif defined(__QNX__) || defined(QNX)
408
/* QNX does not have a working version of strtof */
410
# define HAVE_STRRCHR
414
# define HAVE_STRTOUL
415
# define HAVE_SYS_TIMEB_H
418
# define HAVE_GETHOSTBYNAME_R
419
# define HAVE_GMTIME_R
420
# define HAVE_LOCALTIME_R
424
# define ULONG64 unsigned LONG64
425
# define SOAP_LONG_FORMAT "%ld"
426
# define SOAP_ULONG_FORMAT "%lu"
428
/* Default asumptions on supported functions */
429
# define HAVE_STRRCHR
433
# define HAVE_STRTOUL
434
# define HAVE_SYS_TIMEB_H
437
# define HAVE_GETHOSTBYNAME_R
438
# define HAVE_GMTIME_R
439
# define HAVE_LOCALTIME_R
445
#ifndef WITH_NOSTDLIB
455
#if defined(__cplusplus) && !defined(WITH_LEAN)
467
/* Suggestion when SOAP_FD_EXCEEDED error occurs:
468
Some systems allow increasing FD_SETSIZE before including sys/types.h:
469
#define FD_SETSIZE (2048)
476
# include <sys/types.h>
479
# ifdef HAVE_SYS_TIMEB_H
480
# include <sys/timeb.h> /* for ftime() */
488
# include <sys/socket.h>
489
# include <sys/stream.h>
490
# include <sys/protosw.h>
497
# include <sys/socket.h>
499
# include <sockLib.h>
500
# include <selectLib.h>
504
# include <strings.h>
508
# include <sys/stream.h> /* SUN */
509
# include <sys/socketvar.h> /* SUN < 2.8 (?) */
513
# include <sys/times.h>
516
# include <sys/time.h>
518
# include <netinet/in.h>
520
# include <netinet/tcp_var.h>
522
# include <netinet/tcp.h> /* TCP_NODELAY */
524
# include <arpa/inet.h>
535
# include <winsock2.h> /* Visual Studio 2005 users: you must install the Platform SDK (R2) */
536
# include <ws2tcpip.h>
537
# include <wspiapi.h>
538
# define SOAP_GAI_STRERROR gai_strerrorA
540
# include <winsock.h> /* Visual Studio 2005 users: you must install the Platform SDK (R2) */
541
/* # include <winsock2.h> */ /* Alternative: use winsock2 (not available with eVC) */
545
# include <hostLib.h>
552
# include <netinet/in.h>
556
# include <sys/select.h>
563
# include <fcgi_stdio.h>
567
# define OPENSSL_NO_KRB5
568
# include <openssl/bio.h>
569
# include <openssl/err.h>
570
# include <openssl/rand.h>
571
# include <openssl/ssl.h>
572
# include <openssl/x509v3.h>
573
# ifndef ALLOW_OLD_VERSIONS
574
# if (OPENSSL_VERSION_NUMBER < 0x00905100L)
575
# error "Must use OpenSSL 0.9.6 or later"
586
#ifdef WITH_CASEINSENSITIVETAGS
587
# define SOAP_STRCMP soap_tag_cmp /* case insensitve XML element/attribute names */
589
# define SOAP_STRCMP strcmp /* case sensitive XML element/attribute names */
596
#ifndef WITH_NOSTDLIB
598
# include <math.h> /* for isnan() */
602
/* #define DEBUG */ /* Uncomment to debug sending (in file SENT.log) receiving (in file RECV.log) and messages (in file TEST.log) */
608
/* Portability: define SOAP_SOCKLEN_T */
611
# define SOAP_SOCKLEN_T socklen_t
613
# define SOAP_SOCKLEN_T int
615
#elif defined(SOCKLEN_T)
616
# define SOAP_SOCKLEN_T SOCKLEN_T
617
#elif defined(__socklen_t_defined) || defined(_SOCKLEN_T) || defined(CYGWIN) || defined(FREEBSD) || defined(__FreeBSD__) || defined(__QNX__) || defined(QNX)
618
# define SOAP_SOCKLEN_T socklen_t
619
#elif defined(IRIX) || defined(WIN32) || defined(__APPLE__) || defined(HP_UX) || defined(SUN_OS) || defined(OPENSERVER) || defined(TRU64) || defined(VXWORKS)
620
# define SOAP_SOCKLEN_T int
622
# define SOAP_SOCKLEN_T size_t
627
# define SOAP_SOCKET SOCKET
628
# define soap_closesocket(n) closesocket(n)
630
# define SOAP_SOCKET int
631
# define soap_closesocket(n) close(n)
635
#define SOAP_INVALID_SOCKET (-1)
636
#define soap_valid_socket(n) ((n) != SOAP_INVALID_SOCKET)
638
#ifndef SOAP_GAI_STRERROR
639
# define SOAP_GAI_STRERROR gai_strerror
643
# define FD_SETSIZE (1024)
648
# define ULONG64 unsigned LONG64
649
#elif !defined(WIN32) || defined(CYGWIN) || defined(__GLIBC__) || defined(__GNU__)
651
# if defined(__GLIBC__)
652
# include <bits/wordsize.h>
653
# if (__WORDSIZE == 64)
654
# define LONG64 int64_t
655
# define ULONG64 uint64_t
656
# ifndef SOAP_LONG_FORMAT
657
# define SOAP_LONG_FORMAT "%ld"
659
# ifndef SOAP_ULONG_FORMAT
660
# define SOAP_ULONG_FORMAT "%lu"
663
# define LONG64 long long
664
# define ULONG64 unsigned LONG64
667
# define LONG64 long long
668
# define ULONG64 unsigned LONG64
671
#elif defined(UNDER_CE)
672
# define LONG64 __int64
673
# define ULONG64 unsigned LONG64
674
#elif defined(__BORLANDC__)
675
# define LONG64 __int64
676
# define ULONG64 unsigned LONG64
679
#ifndef SOAP_LONG_FORMAT
680
# define SOAP_LONG_FORMAT "%lld" /* printf format for 64 bit ints */
683
#ifndef SOAP_ULONG_FORMAT
684
# define SOAP_ULONG_FORMAT "%llu" /* printf format for unsigned 64 bit ints */
687
#if defined(WIN32) && !defined(CYGWIN)
688
# define soap_int32 __int32
689
#elif defined(SYMBIAN)
690
# define soap_int32 long
692
# define soap_int32 Int32
695
# define soap_int32 int32_t
697
# define soap_int32 signed int
700
# define soap_int32 int32_t
704
# define SOAP_ERANGE ERANGE
705
# define SOAP_EINTR WSAEINTR
706
# define SOAP_EAGAIN WSAEWOULDBLOCK
707
# define SOAP_EWOULDBLOCK WSAEWOULDBLOCK
708
# define SOAP_EINPROGRESS WSAEINPROGRESS
709
# define SOAP_EADDRINUSE WSAEADDRINUSE
711
# define SOAP_ERANGE ERANGE
712
# define SOAP_EINTR EINTR
713
# define SOAP_EAGAIN EAGAIN
714
# define SOAP_EADDRINUSE EADDRINUSE
716
# define SOAP_EWOULDBLOCK 9898
717
# define SOAP_EINPROGRESS 9899
719
# define SOAP_EWOULDBLOCK EWOULDBLOCK
720
# define SOAP_EINPROGRESS EINPROGRESS
726
# define soap_errno GetLastError()
727
# define soap_socket_errno(s) GetLastError()
728
# define soap_reset_errno SetLastError(0)
730
# define soap_errno GetLastError()
731
# define soap_socket_errno(s) WSAGetLastError()
732
# define soap_reset_errno SetLastError(0)
736
# define soap_errno errno
737
# define soap_socket_errno(s) errno
738
# define soap_reset_errno (errno = 0)
740
# define soap_errno 0
741
# define soap_socket_errno(s) 0
742
# define soap_reset_errno
748
# define SOAP_BUFLEN (65536) /* max UDP packet size */
751
# define SOAP_BUFLEN (65536) /* buffer length for socket packets, also used by gethostbyname_r so don't make this too small */
753
# define SOAP_BUFLEN (2048)
758
# define SOAP_LABLEN (256) /* initial look-aside buffer length */
761
# define SOAP_PTRBLK (32) /* block allocation for pointer hash table chains */
765
# define SOAP_PTRHASH (1024) /* size of pointer analysis hash table (must be power of 2) */
767
# define SOAP_PTRHASH (32)
772
# define SOAP_IDHASH (1999) /* prime size of hash table for parsed id/ref */
774
# define SOAP_IDHASH (19) /* 19, 199 */
779
# define SOAP_BLKLEN (256) /* size of blocks to collect long strings and XML attributes */
781
# define SOAP_BLKLEN (32)
786
# define SOAP_TAGLEN (1024) /* maximum length of XML element tag/attribute name or host/path name + 1 */
788
# define SOAP_TAGLEN (64)
793
# define SOAP_HDRLEN (8192) /* maximum length of HTTP header line (must be >4096 to read cookies) */
795
# define SOAP_HDRLEN (1024)
800
# define SOAP_MAXDIMS (16) /* maximum array dimensions (array nestings) must be less than 64 to protect soap->tmpbuf */
802
# define SOAP_MAXDIMS (4)
807
# define SOAP_MAXLOGS (3) /* max number of debug logs per struct soap environment */
808
# define SOAP_INDEX_RECV (0)
809
# define SOAP_INDEX_SENT (1)
810
# define SOAP_INDEX_TEST (2)
813
#ifndef SOAP_MAXKEEPALIVE
814
# define SOAP_MAXKEEPALIVE (100) /* max iterations to keep server connection alive */
817
#ifndef SOAP_MAXARRAYSIZE
818
# define SOAP_MAXARRAYSIZE (100000) /* "trusted" max size of inbound SOAP array for compound array allocation */
823
# include <private/mathP.h>
827
# define soap_isnan(num) isNan(num)
836
# define soap_isnan(num) _isnan(num)
846
extern "C" int isnan(double);
852
#if !defined(HAVE_ISNAN) && (defined(_MATH_H) || defined(_MATH_INCLUDED))
856
extern const struct soap_double_nan { unsigned int n1, n2; } soap_double_nan;
860
# define FLT_MAX _ARCH_FLT_MAX
863
# define DBL_MAX _ARCH_DBL_MAX
868
# define FLT_NAN (*(float*)(void*)&soap_double_nan)
872
# if defined(FLT_MAX)
873
# define FLT_PINFTY FLT_MAX
874
# elif defined(HUGE_VALF)
875
# define FLT_PINFTY (float)HUGE_VALF
876
# elif defined(HUGE_VAL)
877
# define FLT_PINFTY (float)HUGE_VAL
878
# elif defined(FLOAT_MAX)
879
# define FLT_PINFTY FLOAT_MAX
881
# define FLT_PINFTY (3.40282347e+38F)
886
# define FLT_NINFTY (-FLT_PINFTY)
890
# define DBL_NAN (*(double*)(void*)&soap_double_nan)
894
# if defined(DBL_MAX)
895
# define DBL_PINFTY DBL_MAX
896
# elif defined(HUGE_VALF)
897
# define DBL_PINFTY (double)HUGE_VALF
898
# elif defined(HUGE_VAL)
899
# define DBL_PINFTY (double)HUGE_VAL
900
# elif defined(DOUBLE_MAX)
901
# define DBL_PINFTY DOUBLE_MAX
903
# define DBL_PINFTY (1.7976931348623157e+308)
908
# define DBL_NINFTY (-DBL_PINFTY)
913
# define soap_isnan(n) isnan(n)
915
# define soap_isnan(n) (0)
919
#define soap_ispinfd(n) ((n) >= DBL_PINFTY)
920
#define soap_ispinff(n) ((n) >= FLT_PINFTY)
921
#define soap_isninfd(n) ((n) <= DBL_NINFTY)
922
#define soap_isninff(n) ((n) <= FLT_NINFTY)
924
/* gSOAP error codes */
929
#define SOAP_CLI_FAULT 1
930
#define SOAP_SVR_FAULT 2
931
#define SOAP_TAG_MISMATCH 3
933
#define SOAP_SYNTAX_ERROR 5
934
#define SOAP_NO_TAG 6
936
#define SOAP_MUSTUNDERSTAND 8
937
#define SOAP_NAMESPACE 9
938
#define SOAP_USER_ERROR 10
939
#define SOAP_FATAL_ERROR 11
940
#define SOAP_FAULT 12
941
#define SOAP_NO_METHOD 13
942
#define SOAP_NO_DATA 14
943
#define SOAP_GET_METHOD 15
948
#define SOAP_DUPLICATE_ID 20
949
#define SOAP_MISSING_ID 21
951
#define SOAP_UDP_ERROR 23
952
#define SOAP_TCP_ERROR 24
953
#define SOAP_HTTP_ERROR 25
954
#define SOAP_SSL_ERROR 26
955
#define SOAP_ZLIB_ERROR 27
956
#define SOAP_DIME_ERROR 28
957
#define SOAP_DIME_HREF 29
958
#define SOAP_DIME_MISMATCH 30
959
#define SOAP_DIME_END 31
960
#define SOAP_MIME_ERROR 32
961
#define SOAP_MIME_HREF 33
962
#define SOAP_MIME_END 34
963
#define SOAP_VERSIONMISMATCH 35
964
#define SOAP_PLUGIN_ERROR 36
965
#define SOAP_DATAENCODINGUNKNOWN 37
966
#define SOAP_REQUIRED 38
967
#define SOAP_PROHIBITED 39
968
#define SOAP_OCCURS 40
969
#define SOAP_LENGTH 41
970
#define SOAP_FD_EXCEEDED 42
972
#define soap_xml_error_check(e) ((e) == SOAP_TAG_MISMATCH || (e) == SOAP_NO_TAG || (e) == SOAP_SYNTAX_ERROR || (e) == SOAP_NAMESPACE || (e) == SOAP_DUPLICATE_ID || (e) == SOAP_MISSING_ID || (e) == SOAP_REQUIRED || (e) == SOAP_PROHIBITED || (e) == SOAP_OCCURS || (e) == SOAP_LENGTH || (e) == SOAP_NULL || (e) == SOAP_HREF)
973
#define soap_soap_error_check(e) ((e) == SOAP_CLI_FAULT || (e) == SOAP_SVR_FAULT || (e) == SOAP_VERSIONMISMATCH || (e) == SOAP_MUSTUNDERSTAND || (e) == SOAP_FAULT || (e) == SOAP_NO_METHOD)
974
#define soap_tcp_error_check(e) ((e) == SOAP_EOF || (e) == SOAP_TCP_ERROR)
975
#define soap_ssl_error_check(e) ((e) == SOAP_SSL_ERROR)
976
#define soap_zlib_error_check(e) ((e) == SOAP_ZLIB_ERROR)
977
#define soap_http_error_check(e) ((e) == SOAP_HTTP_ERROR || (e) == SOAP_GET_METHOD || (e) == SOAP_NO_DATA || ((e) >= 100 && (e) < 600))
979
/* gSOAP HTTP response status codes 100 to 599 are reserved */
981
/* Codes 600 to 999 are user definable */
983
/* Exceptional gSOAP HTTP response status codes >= 1000 */
985
#define SOAP_STOP 1000 /* No HTTP response */
986
#define SOAP_FORM 1001 /* Form request/response */
987
#define SOAP_HTML 1002 /* Custom HTML response */
988
#define SOAP_FILE 1003 /* Custom file-based response */
990
/* gSOAP HTTP method codes */
992
#define SOAP_POST 2000
993
#define SOAP_GET 2001
997
#define SOAP_DIME_CF 0x01
998
#define SOAP_DIME_ME 0x02
999
#define SOAP_DIME_MB 0x04
1000
#define SOAP_DIME_VERSION 0x08 /* DIME version 1 */
1001
#define SOAP_DIME_MEDIA 0x10
1002
#define SOAP_DIME_ABSURI 0x20
1006
#define SOAP_ZLIB_NONE 0x00
1007
#define SOAP_ZLIB_DEFLATE 0x01
1008
#define SOAP_ZLIB_INFLATE 0x02
1009
#define SOAP_ZLIB_GZIP 0x02
1011
/* gSOAP transport, connection, and content encoding modes */
1013
typedef soap_int32 soap_mode;
1015
#define SOAP_IO 0x00000003 /* IO mask */
1016
#define SOAP_IO_FLUSH 0x00000000 /* flush output immediately, no buffering */
1017
#define SOAP_IO_BUFFER 0x00000001 /* buffer output in packets of size SOAP_BUFLEN */
1018
#define SOAP_IO_STORE 0x00000002 /* store entire output to determine length for transport */
1019
#define SOAP_IO_CHUNK 0x00000003 /* use HTTP chunked transfer AND buffer packets */
1021
#define SOAP_IO_UDP 0x00000004 /* TCP or UDP */
1023
#define SOAP_IO_LENGTH 0x00000008 /* calc message length (internal) */
1024
#define SOAP_IO_KEEPALIVE 0x00000010 /* keep connection alive */
1026
#define SOAP_ENC_LATIN 0x00000020 /* accept iso-8859-1 encoding */
1027
#define SOAP_ENC_XML 0x00000040 /* plain XML encoding, no HTTP header */
1028
#define SOAP_ENC_DIME 0x00000080
1029
#define SOAP_ENC_MIME 0x00000100
1030
#define SOAP_ENC_MTOM 0x00000200
1031
#define SOAP_ENC_ZLIB 0x00000400
1032
#define SOAP_ENC_SSL 0x00000800
1034
#define SOAP_ENC 0x00000FFF /* IO and ENC mask */
1036
#define SOAP_XML_STRICT 0x00001000 /* apply strict validation */
1037
#define SOAP_XML_INDENT 0x00002000 /* emit indented XML */
1038
#define SOAP_XML_CANONICAL 0x00004000 /* EXC C14N canonical XML */
1039
#define SOAP_XML_TREE 0x00008000 /* emit XML tree (no id/ref) */
1040
#define SOAP_XML_GRAPH 0x00010000
1041
#define SOAP_XML_NIL 0x00020000
1042
#define SOAP_XML_DOM 0x00040000
1043
#define SOAP_XML_SEC 0x00080000 /* reserved for WS security */
1045
#define SOAP_C_NOIOB 0x00100000 /* don't fault on array index out of bounds (just ignore) */
1046
#define SOAP_C_UTFSTRING 0x00200000 /* (de)serialize strings with UTF8 content */
1047
#define SOAP_C_MBSTRING 0x00400000 /* (de)serialize strings with multi-byte content */
1048
#define SOAP_C_NILSTRING 0x00800000 /* serialize empty strings as nil (omitted) */
1050
#define SOAP_DOM_TREE 0x01000000
1051
#define SOAP_DOM_NODE 0x02000000
1052
#define SOAP_DOM_ASIS 0x04000000
1054
#define SOAP_MIME_POSTCHECK 0x10000000 /* MIME flag (internal) */
1056
#define SOAP_IO_DEFAULT SOAP_IO_FLUSH
1058
/* SSL client/server authentication settings */
1060
#define SOAP_SSL_NO_AUTHENTICATION 0x00 /* for testing purposes */
1061
#define SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION 0x01 /* client requires server to authenticate */
1062
#define SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION 0x02 /* server requires client to authenticate */
1063
#define SOAP_SSL_SKIP_HOST_CHECK 0x04 /* client does not check the common name of the host in certificate */
1064
#define SOAP_SSL_RSA 0x08 /* use RSA */
1065
#define SOAP_SSLv3_TLSv1 0x00 /* SSL v3 and TLS v1 support by default */
1066
#define SOAP_SSLv3 0x10 /* SSL v3 only */
1067
#define SOAP_TLSv1 0x20 /* TLS v1 only */
1069
#define SOAP_SSL_DEFAULT (SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION | SOAP_SSLv3_TLSv1)
1076
#define soap_check_state(soap) (!(soap) || ((soap)->state != SOAP_INIT && (soap)->state != SOAP_COPY))
1080
#define SOAP_BEGIN 0
1081
#define SOAP_IN_ENVELOPE 2
1082
#define SOAP_IN_HEADER 3
1083
#define SOAP_END_HEADER 4
1084
#define SOAP_NO_BODY 5
1085
#define SOAP_IN_BODY 6
1086
#define SOAP_END_BODY 7
1087
#define SOAP_END_ENVELOPE 8
1089
#define SOAP_BEGIN_SECURITY 10
1090
#define SOAP_IN_SECURITY 11
1091
#define SOAP_END_SECURITY 12
1100
# ifndef SOAP_MEM_DEBUG
1101
# define SOAP_MEM_DEBUG
1106
#ifdef SOAP_MEM_DEBUG
1107
# ifndef SOAP_MALLOC
1108
# define SOAP_MALLOC(soap, size) soap_track_malloc(soap, __FILE__, __LINE__, size)
1111
# define SOAP_FREE(soap, ptr) soap_track_free(soap, __FILE__, __LINE__, ptr)
1115
#ifndef SOAP_MALLOC /* use libc malloc */
1116
# define SOAP_MALLOC(soap, size) malloc(size)
1119
#ifndef SOAP_FREE /* use libc free */
1120
# define SOAP_FREE(soap, ptr) free(ptr)
1124
# ifndef SOAP_MESSAGE
1125
# define SOAP_MESSAGE fprintf
1128
# define DBGLOG(DBGFILE, CMD) \
1130
{ if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\
1131
soap_open_logfile((struct soap*)soap, SOAP_INDEX_##DBGFILE);\
1132
if (soap->fdebug[SOAP_INDEX_##DBGFILE])\
1133
{ FILE *fdebug = soap->fdebug[SOAP_INDEX_##DBGFILE];\
1141
# define DBGMSG(DBGFILE, MSG, LEN) \
1143
{ if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\
1144
soap_open_logfile((struct soap*)soap, SOAP_INDEX_##DBGFILE);\
1145
if (soap->fdebug[SOAP_INDEX_##DBGFILE])\
1146
{ fwrite((MSG), 1, (LEN), soap->fdebug[SOAP_INDEX_##DBGFILE]);\
1147
fflush(soap->fdebug[SOAP_INDEX_##DBGFILE]);\
1153
# define DBGFUN(FNAME) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s()\n", __FILE__, __LINE__, FNAME))
1154
# define DBGFUN1(FNAME, FMT, ARG) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s("FMT")\n", __FILE__, __LINE__, FNAME, (ARG)))
1155
# define DBGFUN2(FNAME, FMT1, ARG1, FMT2, ARG2) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s("FMT1", "FMT2")\n", __FILE__, __LINE__, FNAME, (ARG1), (ARG2)))
1156
# define DBGFUN3(FNAME, FMT1, ARG1, FMT2, ARG2, FMT3, ARG3) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s("FMT1", "FMT2", "FMT3")\n", __FILE__, __LINE__, FNAME, (ARG1), (ARG2), (ARG3)))
1159
# define DBGHEX(DBGFILE, MSG, LEN) \
1161
{ if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\
1162
soap_open_logfile(soap, SOAP_INDEX_##DBGFILE);\
1163
if (soap->fdebug[SOAP_INDEX_##DBGFILE])\
1165
for (s = (char*)(MSG), i = (LEN); i; i--)\
1166
fprintf(soap->fdebug[SOAP_INDEX_##DBGFILE], "%2.2X ", (int)*s++&0xFF);\
1167
fflush(soap->fdebug[SOAP_INDEX_##DBGFILE]);\
1173
# define DBGLOG(DBGFILE, CMD)
1174
# define DBGMSG(DBGFILE, MSG, LEN)
1175
# define DBGFUN(FNAME)
1176
# define DBGFUN1(FNAME, FMT, ARG)
1177
# define DBGFUN2(FNAME, FMT1, ARG1, FMT2, ARG2)
1178
# define DBGFUN3(FNAME, FMT1, ARG1, FMT2, ARG2, FMT3, ARG3)
1179
# define DBGHEX(DBGFILE, MSG, LEN)
1182
/* UCS-4 requires 32 bits (0-7FFFFFFF, the sign bit is used by gSOAP to distinguish XML entities) */
1183
typedef soap_int32 soap_wchar;
1185
/* namespace table row */
1193
/* namespace stack */
1195
{ struct soap_nlist *next;
1196
unsigned int level; /* nesting depth level */
1197
short index; /* corresponding entry in ns mapping table */
1198
char *ns; /* only set when parsed ns URI is not in the ns mapping table */
1199
char id[1]; /* the actual string value flows into the allocated region below this struct */
1202
/* block stack for nested block allocations */
1204
{ struct soap_blist *next;
1215
/* pointer serialization management */
1217
{ struct soap_plist *next;
1219
const struct soap_array *array;
1226
/* block allocation for pointer serialization management */
1228
{ struct soap_pblk *next;
1229
struct soap_plist plist[SOAP_PTRBLK];
1232
#ifdef SOAP_MEM_DEBUG
1233
/* malloc/free tracking for debugging */
1235
{ struct soap_mlist *next;
1243
/* class allocation list */
1245
{ struct soap_clist *next;
1249
int (*fdelete)(struct soap_clist*);
1253
struct soap_attribute
1254
{ struct soap_attribute *next;
1259
char name[1]; /* the actual name string flows into the allocated region below this struct */
1264
{ struct soap_cookie *next;
1269
time_t expire; /* client-side: local time to expire */
1270
long maxage; /* server-side: seconds to expire */
1271
unsigned int version;
1273
short session; /* server-side */
1274
short env; /* server-side: got cookie from client and should not be (re)send */
1275
short modified; /* server-side: client cookie was modified and should be send */
1280
SOAP_FMAC1 struct soap_multipart* SOAP_FMAC2 soap_next_multipart(struct soap_multipart*);
1282
class soap_multipart_iterator
1284
struct soap_multipart *content;
1285
bool operator==(const soap_multipart_iterator& iter) const
1286
{ return content == iter.content; }
1287
bool operator!=(const soap_multipart_iterator& iter) const
1288
{ return content != iter.content; }
1289
struct soap_multipart &operator*() const
1290
{ return *content; }
1291
soap_multipart_iterator &operator++()
1292
{ content = soap_next_multipart(content); return *this; }
1293
soap_multipart_iterator() : content(NULL)
1295
soap_multipart_iterator(struct soap_multipart *p) : content(p)
1310
const char *options;
1311
struct soap_multipart *list; /* list of DIME attachments received */
1312
struct soap_multipart *first, *last; /* temporary in/out queue */
1314
soap_multipart_iterator begin()
1315
{ soap_multipart_iterator iter(list); return iter; };
1316
soap_multipart_iterator end()
1317
{ soap_multipart_iterator iter(NULL); return iter; };
1324
{ char *boundary; /* MIME boundary */
1325
const char *start; /* MIME start ID */
1326
struct soap_multipart *list; /* list of MIME attachments received */
1327
struct soap_multipart *first, *last; /* temporary in/out queue */
1329
soap_multipart_iterator begin()
1330
{ soap_multipart_iterator iter(list); return iter; };
1331
soap_multipart_iterator end()
1332
{ soap_multipart_iterator iter(NULL); return iter; };
1338
/* RFC2045 MIME content transfer encodings */
1339
enum soap_mime_encoding
1344
SOAP_MIME_QUOTED_PRINTABLE,
1346
SOAP_MIME_IETF_TOKEN,
1352
/* DIME/MIME multipart list */
1353
struct soap_multipart
1354
{ struct soap_multipart *next;
1355
char *ptr; /* points to raw data content */
1356
size_t size; /* size of data content */
1357
const char *id; /* DIME/MIME content ID or form data name */
1358
const char *type; /* DIME/MIME type (MIME type format) */
1359
const char *options; /* DIME options */
1360
enum soap_mime_encoding encoding; /* MIME Content-Transfer-Encoding */
1361
const char *location; /* MIME Content-Location (optional) */
1362
const char *description; /* MIME Content-Description (optional) */
1364
typedef soap_multipart_iterator iterator;
1370
/* attachment DIME and MTOM XOP forwarding */
1372
{ struct soap_xlist *next;
1373
unsigned char **ptr;
1381
/******************************************************************************/
1385
class soap_dom_attribute_iterator
1387
struct soap_dom_attribute *att;
1390
bool operator==(const soap_dom_attribute_iterator&) const;
1391
bool operator!=(const soap_dom_attribute_iterator&) const;
1392
struct soap_dom_attribute &operator*() const;
1393
soap_dom_attribute_iterator &operator++();
1394
soap_dom_attribute_iterator();
1395
soap_dom_attribute_iterator(struct soap_dom_attribute*);
1396
~soap_dom_attribute_iterator();
1402
struct soap_dom_attribute
1403
{ struct soap_dom_attribute *next;
1410
typedef soap_dom_attribute_iterator iterator;
1411
struct soap_dom_attribute &set(const char *nstr, const char *name); /* set namespace and name */
1412
struct soap_dom_attribute &set(const char *data); /* set data */
1413
soap_dom_attribute_iterator begin();
1414
soap_dom_attribute_iterator end();
1415
soap_dom_attribute_iterator find(const char *nstr, const char *name);
1417
soap_dom_attribute();
1418
soap_dom_attribute(struct soap *soap);
1419
soap_dom_attribute(struct soap *soap, const char *nstr, const char *name, const char *data);
1420
~soap_dom_attribute();
1427
class soap_dom_element_iterator
1429
struct soap_dom_element *elt;
1433
bool operator==(const soap_dom_element_iterator&) const;
1434
bool operator!=(const soap_dom_element_iterator&) const;
1435
struct soap_dom_element &operator*() const;
1436
soap_dom_element_iterator &operator++();
1437
soap_dom_element_iterator();
1438
soap_dom_element_iterator(struct soap_dom_element*);
1439
~soap_dom_element_iterator();
1445
struct soap_dom_element
1446
{ struct soap_dom_element *next; /* next sibling */
1447
struct soap_dom_element *prnt; /* parent */
1448
struct soap_dom_element *elts; /* list of child elements */
1449
struct soap_dom_attribute *atts; /* list of attributes */
1450
const char *nstr; /* namespace string */
1451
char *name; /* element tag name */
1452
char *data; /* element content data (with SOAP_C_UTFSTRING flag set) */
1453
wchar_t *wide; /* element content data */
1454
int type; /* optional: serialized C/C++ data type */
1455
void *node; /* optional: pointer to serialized C/C++ data */
1456
char *head; /* leading whitespace to start tag */
1457
char *tail; /* leading whitespace to end tag */
1458
struct soap *soap; /* soap context that manages this node */
1460
typedef soap_dom_element_iterator iterator;
1461
struct soap_dom_element &set(const char *nstr, const char *name);
1462
struct soap_dom_element &set(const char *data);
1463
struct soap_dom_element &set(void *node, int type);
1464
struct soap_dom_element &add(struct soap_dom_element*);
1465
struct soap_dom_element &add(struct soap_dom_element&);
1466
struct soap_dom_element &add(struct soap_dom_attribute*);
1467
struct soap_dom_element &add(struct soap_dom_attribute&);
1468
soap_dom_element_iterator begin();
1469
soap_dom_element_iterator end();
1470
soap_dom_element_iterator find(const char *nstr, const char *name);
1471
soap_dom_element_iterator find(int type);
1474
soap_dom_element(struct soap *soap);
1475
soap_dom_element(struct soap *soap, const char *nstr, const char *name);
1476
soap_dom_element(struct soap *soap, const char *nstr, const char *name, const char *data);
1477
soap_dom_element(struct soap *soap, const char *nstr, const char *name, void *node, int type);
1478
~soap_dom_element();
1481
SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_dom_next_element(struct soap_dom_element *elt);
1482
SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_dom_next_attribute(struct soap_dom_attribute *att);
1485
#if defined(__cplusplus) && !defined(WITH_LEAN)
1487
extern std::ostream &operator<<(std::ostream&, const struct soap_dom_element&);
1488
extern std::istream &operator>>(std::istream&, struct soap_dom_element&);
1492
/******************************************************************************/
1495
# ifdef SOAP_STD_EXPORTS
1496
# define SOAP_STD_API __declspec(dllexport)
1498
# define SOAP_STD_API
1501
# define SOAP_STD_API
1504
struct SOAP_STD_API soap
1505
{ short state; /* 0 = uninitialized, 1 = initialized, 2 = copy of another soap struct */
1506
short version; /* 1 = SOAP1.1 and 2 = SOAP1.2 (set automatically from namespace URI in nsmap table) */
1510
const char *float_format; /* user-definable format string for floats (<1024 chars) */
1511
const char *double_format; /* user-definable format string for doubles (<1024 chars) */
1512
const char *dime_id_format; /* user-definable format string for integer DIME id (<SOAP_TAGLEN chars) */
1513
const char *http_version; /* HTTP version used "1.0" or "1.1" */
1514
const char *http_content; /* optional custom response content type (with SOAP_FILE) */
1515
const char *encodingStyle; /* default = NULL which means that SOAP encoding is used */
1516
const char *actor; /* SOAP-ENV:actor or role attribute value */
1517
int recv_timeout; /* when > 0, gives socket recv timeout in seconds, < 0 in usec */
1518
int send_timeout; /* when > 0, gives socket send timeout in seconds, < 0 in usec */
1519
int connect_timeout; /* when > 0, gives socket connect() timeout in seconds, < 0 in usec */
1520
int accept_timeout; /* when > 0, gives socket accept() timeout in seconds, < 0 in usec */
1521
int socket_flags; /* socket recv() and send() flags, e.g. set to MSG_NOSIGNAL to disable sigpipe */
1522
int connect_flags; /* connect() SOL_SOCKET sockopt flags, e.g. set to SO_DEBUG to debug socket */
1523
int bind_flags; /* bind() SOL_SOCKET sockopt flags, e.g. set to SO_REUSEADDR to enable reuse */
1524
int accept_flags; /* accept() SOL_SOCKET sockopt flags */
1525
const struct Namespace *namespaces; /* Pointer to global namespace mapping table */
1526
struct Namespace *local_namespaces; /* Local namespace mapping table */
1527
struct soap_nlist *nlist; /* namespace stack */
1528
struct soap_blist *blist; /* block allocation stack */
1529
struct soap_clist *clist; /* class instance allocation list */
1530
void *alist; /* memory allocation (malloc) list */
1531
struct soap_ilist *iht[SOAP_IDHASH];
1532
struct soap_plist *pht[SOAP_PTRHASH];
1533
struct soap_pblk *pblk; /* plist block allocation */
1534
short pidx; /* plist block allocation */
1535
struct SOAP_ENV__Header *header;
1536
struct SOAP_ENV__Fault *fault;
1538
void *user; /* to pass user-defined data */
1539
struct soap_plugin *plugins; /* linked list of plug-in data */
1540
char *userid; /* HTTP Basic authorization userid */
1541
char *passwd; /* HTTP Basic authorization passwd */
1542
int (*fpost)(struct soap*, const char*, const char*, int, const char*, const char*, size_t);
1543
int (*fget)(struct soap*);
1544
int (*fform)(struct soap*);
1545
int (*fposthdr)(struct soap*, const char*, const char*);
1546
int (*fresponse)(struct soap*, int, size_t);
1547
int (*fparse)(struct soap*);
1548
int (*fparsehdr)(struct soap*, const char*, const char*);
1549
int (*fheader)(struct soap*);
1550
int (*fresolve)(struct soap*, const char*, struct in_addr* inaddr);
1551
int (*fconnect)(struct soap*, const char*, const char*, int);
1552
int (*fdisconnect)(struct soap*);
1553
int (*fclosesocket)(struct soap*, SOAP_SOCKET);
1554
int (*fshutdownsocket)(struct soap*, SOAP_SOCKET, int);
1555
SOAP_SOCKET (*fopen)(struct soap*, const char*, const char*, int);
1556
SOAP_SOCKET (*faccept)(struct soap*, SOAP_SOCKET, struct sockaddr*, int *n);
1557
int (*fclose)(struct soap*);
1558
int (*fsend)(struct soap*, const char*, size_t);
1559
size_t (*frecv)(struct soap*, char*, size_t);
1560
int (*fpoll)(struct soap*);
1561
void (*fseterror)(struct soap*, const char **c, const char **s);
1562
int (*fignore)(struct soap*, const char*);
1563
int (*fserveloop)(struct soap*);
1564
void *(*fplugin)(struct soap*, const char*);
1565
void *(*fmalloc)(struct soap*, size_t);
1567
int (*fprepareinit)(struct soap*);
1568
int (*fpreparesend)(struct soap*, const char*, size_t);
1569
int (*fpreparerecv)(struct soap*, const char*, size_t);
1570
int (*fpreparefinal)(struct soap*);
1571
void *(*fdimereadopen)(struct soap*, void*, const char*, const char*, const char*);
1572
void *(*fdimewriteopen)(struct soap*, const char*, const char*, const char*);
1573
void (*fdimereadclose)(struct soap*, void*);
1574
void (*fdimewriteclose)(struct soap*, void*);
1575
size_t (*fdimeread)(struct soap*, void*, char*, size_t);
1576
int (*fdimewrite)(struct soap*, void*, const char*, size_t);
1577
void *(*fmimereadopen)(struct soap*, void*, const char*, const char*, const char*);
1578
void *(*fmimewriteopen)(struct soap*, void*, const char*, const char*, const char*, enum soap_mime_encoding);
1579
void (*fmimereadclose)(struct soap*, void*);
1580
void (*fmimewriteclose)(struct soap*, void*);
1581
size_t (*fmimeread)(struct soap*, void*, char*, size_t);
1582
int (*fmimewrite)(struct soap*, void*, const char*, size_t);
1586
#if defined(__cplusplus) && !defined(WITH_LEAN)
1590
void *os; /* preserve alignment */
1591
void *is; /* preserve alignment */
1600
size_t bufidx; /* index in soap.buf[] */
1601
size_t buflen; /* length of soap.buf[] content */
1602
soap_wchar ahead; /* parser lookahead */
1603
short cdata; /* CDATA parser state */
1604
short body; /* parsed XML element has a body or not */
1605
unsigned int level; /* XML nesting level */
1606
size_t count; /* message length counter */
1607
size_t length; /* message length as set by HTTP header */
1608
char *labbuf; /* look-aside buffer */
1609
size_t lablen; /* look-aside buffer allocated length */
1610
size_t labidx; /* look-aside buffer index to available part */
1611
char buf[SOAP_BUFLEN];/* send and receive buffer */
1612
char msgbuf[1024]; /* in/output buffer for messages >=1024 bytes */
1613
char tmpbuf[1024]; /* in/output buffer for HTTP/MIME headers, simpleType values, attribute names, and DIME must be >=1024 bytes */
1614
char tag[SOAP_TAGLEN];
1615
char id[SOAP_TAGLEN];
1616
char href[SOAP_TAGLEN];
1617
char type[SOAP_TAGLEN];
1618
char arrayType[SOAP_TAGLEN];
1619
char arraySize[SOAP_TAGLEN];
1620
char arrayOffset[SOAP_TAGLEN];
1623
int positions[SOAP_MAXDIMS];
1625
struct soap_attribute *attributes; /* attribute list */
1626
short encoding; /* when set, output encodingStyle */
1627
short mustUnderstand; /* a mustUnderstand element was parsed or is output */
1628
short null; /* parsed XML is xsi:nil */
1629
short ns; /* when not set, output full xmlns bindings */
1630
short part; /* parsing state */
1635
char endpoint[SOAP_TAGLEN];
1636
char path[SOAP_TAGLEN];
1637
char host[SOAP_TAGLEN];
1639
char *authrealm; /* HTTP authentication realm */
1640
char *prolog; /* XML declaration prolog */
1641
unsigned long ip; /* IP number */
1642
int port; /* port number */
1643
short keep_alive; /* connection should be kept open */
1644
short tcp_keep_alive; /* enable SO_KEEPALIVE */
1645
unsigned int tcp_keep_idle; /* set TCP_KEEPIDLE */
1646
unsigned int tcp_keep_intvl; /* set TCP_KEEPINTVL */
1647
unsigned int tcp_keep_cnt; /* set TCP_KEEPCNT */
1648
unsigned int max_keep_alive; /* maximum keep-alive session (default=100) */
1649
const char *proxy_http_version;/* HTTP version of proxy "1.0" or "1.1" */
1650
const char *proxy_host; /* Proxy Server host name */
1651
int proxy_port; /* Proxy Server port (default = 8080) */
1652
const char *proxy_userid; /* Proxy Authorization user name */
1653
const char *proxy_passwd; /* Proxy Authorization password */
1654
const char *proxy_from; /* X-Forwarding-For header returned by proxy */
1655
int status; /* -1 when request, else error code to be returned by server */
1660
struct soap_dom_element *dom;
1661
struct soap_dime dime;
1662
struct soap_mime mime;
1663
struct soap_xlist *xlist;
1665
#if !defined(WITH_LEAN) || defined(SOAP_DEBUG)
1666
const char *logfile[SOAP_MAXLOGS];
1667
FILE *fdebug[SOAP_MAXLOGS];
1668
struct soap_mlist *mht[SOAP_PTRHASH];
1671
const char *c14ninclude;
1672
const char *c14nexclude;
1673
struct soap_cookie *cookies;
1674
const char *cookie_domain;
1675
const char *cookie_path;
1680
struct sockaddr_storage peer; /* IPv6: set by soap_accept and by UDP recv */
1682
struct sockaddr_in peer; /* IPv4: set by soap_connect/soap_accept and by UDP recv */
1687
int (*fsslauth)(struct soap*);
1688
int (*fsslverify)(int, X509_STORE_CTX*);
1692
unsigned short ssl_flags;
1693
const char *keyfile;
1694
const char *password;
1698
const char *crlfile;
1699
const char *randfile;
1700
SSL_SESSION *session;
1701
char session_host[SOAP_TAGLEN];
1705
short zlib_state; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_INFLATE */
1706
short zlib_in; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */
1707
short zlib_out; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */
1708
z_stream d_stream; /* decompression stream */
1709
char z_buf[SOAP_BUFLEN]; /* buffer */
1711
unsigned short z_level; /* compression level to be used (0=none, 1=fast to 9=best) */
1712
uLong z_crc; /* internal gzip crc */
1713
float z_ratio_in; /* detected compression ratio compressed_length/length of inbound message */
1714
float z_ratio_out; /* detected compression ratio compressed_length/length of outbound message */
1723
soap(soap_mode, soap_mode);
1730
struct soap_code_map
1735
/* forwarding list */
1737
{ struct soap_flist *next;
1742
void (*fcopy)(struct soap*, int, int, void*, size_t, const void*, size_t);
1745
/* id-ref forwarding list */
1747
{ struct soap_ilist *next;
1752
struct soap_flist *flist;
1755
char id[1]; /* the actual id string value flows into the allocated region below this struct */
1759
{ struct soap_plugin *next;
1762
int (*fcopy)(struct soap *soap, struct soap_plugin *dst, struct soap_plugin *src);
1763
void (*fdelete)(struct soap *soap, struct soap_plugin *p); /* should delete fields of plugin only and not free(p) */
1766
#ifndef WITH_NONAMESPACES
1767
extern SOAP_NMAC struct Namespace namespaces[];
1771
# define soap_get0(soap) (((soap)->bufidx>=(soap)->buflen && soap_recv(soap)) ? EOF : (unsigned char)(soap)->buf[(soap)->bufidx])
1772
# define soap_get1(soap) (((soap)->bufidx>=(soap)->buflen && soap_recv(soap)) ? EOF : (unsigned char)(soap)->buf[(soap)->bufidx++])
1774
soap_wchar soap_get0(struct soap*);
1775
soap_wchar soap_get1(struct soap*);
1778
#define soap_revget1(soap) ((soap)->bufidx--)
1779
#define soap_unget(soap, c) ((soap)->ahead = c)
1780
#define soap_register_plugin(soap, plugin) soap_register_plugin_arg(soap, plugin, NULL)
1781
#define soap_imode(soap, n) ((soap)->mode = (soap)->imode = (n))
1782
#define soap_set_imode(soap, n) ((soap)->imode |= (n))
1783
#define soap_clr_imode(soap, n) ((soap)->imode &= ~(n))
1784
#define soap_omode(soap, n) ((soap)->mode = (soap)->omode = (n))
1785
#define soap_set_omode(soap, n) ((soap)->omode |= (n))
1786
#define soap_clr_omode(soap, n) ((soap)->omode &= ~(n))
1787
#define soap_set_mode(soap, n) ((soap)->imode |= (n), (soap)->omode |= (n))
1788
#define soap_clr_mode(soap, n) ((soap)->imode &= ~(n), (soap)->omode &= ~(n))
1789
#define soap_destroy(soap) soap_delete((soap), NULL)
1792
# define soap_strrchr(s, t) strrchr(s, t)
1794
SOAP_FMAC1 char* SOAP_FMAC2 soap_strrchr(const char *s, int t);
1798
# define soap_strtol(s, t, b) strtol(s, t, b)
1800
SOAP_FMAC1 long SOAP_FMAC2 soap_strtol(const char *s, char **t, int b);
1804
# define soap_strtoul(s, t, b) strtoul(s, t, b)
1806
SOAP_FMAC1 unsigned long SOAP_FMAC2 soap_strtoul(const char *s, char **t, int b);
1809
#if defined(WITH_OPENSSL)
1810
# define soap_random soap_rand()
1811
SOAP_FMAC1 int SOAP_FMAC2 soap_rand(void);
1812
#elif defined(HAVE_RANDOM)
1813
# define soap_random (int)random()
1815
# define soap_random rand()
1819
# define soap_embedded(s, p, t) (0)
1820
# define soap_id_lookup(s, i, p, t, n, k) (p)
1821
# define soap_id_forward(s, h, p, len, st, tt, n, k, fc) (p)
1822
# define soap_reference(s, a, t) (1)
1823
# define soap_array_reference(s, p, a, n, t) (1)
1824
# define soap_embed(s, p, a, n, t, pp) (0)
1825
# define soap_embedded_id(s, i, p, t) (i)
1826
# define soap_is_embedded(s, p) (0)
1827
# define soap_is_single(s, p) (1)
1828
# define soap_lookup_type(s, i) (0)
1829
# define soap_getindependent(s) (0)
1830
# define soap_putindependent(s) (0)
1831
# define soap_getelement(s, n) (n)
1832
# define soap_putelement(s, p, t, i, n) (0)
1833
# define soap_markelement(s, p, n) (0)
1836
SOAP_FMAC1 void SOAP_FMAC2 soap_header(struct soap*);
1837
SOAP_FMAC1 void SOAP_FMAC2 soap_fault(struct soap*);
1838
SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultcode(struct soap*);
1839
SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultsubcode(struct soap*);
1840
SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultstring(struct soap*);
1841
SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultdetail(struct soap*);
1842
SOAP_FMAC1 void SOAP_FMAC2 soap_serializeheader(struct soap*);
1843
SOAP_FMAC1 int SOAP_FMAC2 soap_putheader(struct soap*);
1844
SOAP_FMAC1 int SOAP_FMAC2 soap_getheader(struct soap*);
1845
SOAP_FMAC1 void SOAP_FMAC2 soap_serializefault(struct soap*);
1846
SOAP_FMAC1 int SOAP_FMAC2 soap_putfault(struct soap*);
1847
SOAP_FMAC1 int SOAP_FMAC2 soap_getfault(struct soap*);
1849
SOAP_FMAC1 void SOAP_FMAC2 soap_ssl_init(void);
1850
SOAP_FMAC1 int SOAP_FMAC2 soap_poll(struct soap*);
1851
SOAP_FMAC1 int SOAP_FMAC2 soap_connect_command(struct soap*, int, const char*, const char*);
1852
SOAP_FMAC1 int SOAP_FMAC2 soap_connect(struct soap*, const char*, const char*);
1853
SOAP_FMAC1 SOAP_SOCKET SOAP_FMAC2 soap_bind(struct soap*, const char*, int, int);
1854
SOAP_FMAC1 SOAP_SOCKET SOAP_FMAC2 soap_accept(struct soap*);
1855
SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_accept(struct soap*);
1856
SOAP_FMAC1 const char * SOAP_FMAC2 soap_ssl_error(struct soap*, int);
1858
SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_server_context(struct soap*, unsigned short, const char*, const char*, const char*, const char*, const char*, const char*, const char*);
1859
SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_client_context(struct soap*, unsigned short, const char*, const char*, const char*, const char*, const char*);
1861
SOAP_FMAC1 int SOAP_FMAC2 soap_puthttphdr(struct soap*, int status, size_t count);
1863
SOAP_FMAC1 const char* SOAP_FMAC2 soap_get_header_attribute(struct soap*, const char*, const char*);
1864
SOAP_FMAC1 const char* SOAP_FMAC2 soap_decode_key(char*, size_t, const char*);
1865
SOAP_FMAC1 const char* SOAP_FMAC2 soap_decode_val(char*, size_t, const char*);
1867
SOAP_FMAC1 size_t SOAP_FMAC2 soap_hash(const char*);
1868
SOAP_FMAC1 void SOAP_FMAC2 soap_set_endpoint(struct soap*, const char*);
1869
SOAP_FMAC1 int SOAP_FMAC2 soap_flush_raw(struct soap*, const char*, size_t);
1870
SOAP_FMAC1 int SOAP_FMAC2 soap_flush(struct soap*);
1871
SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_get(struct soap*);
1872
SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_getchar(struct soap*);
1873
SOAP_FMAC1 int SOAP_FMAC2 soap_tag_cmp(const char*, const char*);
1874
SOAP_FMAC1 void SOAP_FMAC2 soap_set_fault(struct soap*);
1875
SOAP_FMAC1 int SOAP_FMAC2 soap_sender_fault(struct soap*, const char*, const char*);
1876
SOAP_FMAC1 int SOAP_FMAC2 soap_sender_fault_subcode(struct soap*, const char*, const char*, const char*);
1877
SOAP_FMAC1 int SOAP_FMAC2 soap_receiver_fault(struct soap*, const char*, const char*);
1878
SOAP_FMAC1 int SOAP_FMAC2 soap_receiver_fault_subcode(struct soap*, const char*, const char*, const char*);
1879
SOAP_FMAC1 int SOAP_FMAC2 soap_set_sender_error(struct soap*, const char*, const char*, int);
1880
SOAP_FMAC1 int SOAP_FMAC2 soap_set_receiver_error(struct soap*, const char*, const char*, int);
1882
SOAP_FMAC1 int SOAP_FMAC2 soap_send_raw(struct soap*, const char*, size_t);
1883
SOAP_FMAC1 int SOAP_FMAC2 soap_recv_raw(struct soap*);
1884
SOAP_FMAC1 int SOAP_FMAC2 soap_recv(struct soap*);
1885
SOAP_FMAC1 int SOAP_FMAC2 soap_send(struct soap*, const char*);
1886
SOAP_FMAC1 int SOAP_FMAC2 soap_send2(struct soap*, const char*, const char*);
1887
SOAP_FMAC1 int SOAP_FMAC2 soap_send3(struct soap*, const char*, const char*, const char*);
1889
SOAP_FMAC1 int SOAP_FMAC2 soap_pututf8(struct soap*, unsigned long);
1890
SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_getutf8(struct soap*);
1892
SOAP_FMAC1 int SOAP_FMAC2 soap_putbase64(struct soap*, const unsigned char*, int);
1893
SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_getbase64(struct soap*, int*, int);
1894
SOAP_FMAC1 int SOAP_FMAC2 soap_puthex(struct soap*, const unsigned char*, int);
1895
SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_gethex(struct soap*, int*);
1898
SOAP_FMAC1 int SOAP_FMAC2 soap_xop_forward(struct soap*, unsigned char**, int*, char**, char**, char**);
1899
SOAP_FMAC1 int SOAP_FMAC2 soap_dime_forward(struct soap*, unsigned char**, int*, char**, char**, char**);
1902
#ifndef WITH_NOIDREF
1903
SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_lookup_id(struct soap*, void *p, int t, struct soap_plist**);
1904
SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_lookup(struct soap*, const void *p, int t, struct soap_plist**);
1905
SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_enter(struct soap*, const void *p, const struct soap_array *a, int n, int t, struct soap_plist**);
1906
SOAP_FMAC1 int SOAP_FMAC2 soap_array_pointer_lookup(struct soap*, const void *p, const struct soap_array *a, int n, int t, struct soap_plist**);
1907
SOAP_FMAC1 int SOAP_FMAC2 soap_embed(struct soap *soap, const void *p, const struct soap_array *a, int n, const char *tag, int type);
1908
SOAP_FMAC1 struct soap_ilist* SOAP_FMAC2 soap_lookup(struct soap*, const char*);
1909
SOAP_FMAC1 struct soap_ilist* SOAP_FMAC2 soap_enter(struct soap*, const char*);
1910
SOAP_FMAC1 int SOAP_FMAC2 soap_resolve(struct soap*);
1911
SOAP_FMAC1 void SOAP_FMAC2 soap_embedded(struct soap*, const void *p, int t);
1912
SOAP_FMAC1 int SOAP_FMAC2 soap_reference(struct soap*, const void *p, int t);
1913
SOAP_FMAC1 int SOAP_FMAC2 soap_array_reference(struct soap*, const void *p, const struct soap_array *a, int n, int t);
1914
SOAP_FMAC1 int SOAP_FMAC2 soap_embedded_id(struct soap*, int id, const void *p, int t);
1915
SOAP_FMAC1 int SOAP_FMAC2 soap_is_embedded(struct soap*, struct soap_plist*);
1916
SOAP_FMAC1 int SOAP_FMAC2 soap_is_single(struct soap*, struct soap_plist*);
1917
SOAP_FMAC1 void SOAP_FMAC2 soap_set_embedded(struct soap*, struct soap_plist*);
1920
SOAP_FMAC1 int SOAP_FMAC2 soap_begin_count(struct soap*);
1921
SOAP_FMAC1 int SOAP_FMAC2 soap_end_count(struct soap*);
1922
SOAP_FMAC1 int SOAP_FMAC2 soap_begin_send(struct soap*);
1923
SOAP_FMAC1 int SOAP_FMAC2 soap_end_send(struct soap*);
1925
SOAP_FMAC1 const struct soap_code_map* SOAP_FMAC2 soap_code(const struct soap_code_map*, const char*);
1926
SOAP_FMAC1 long SOAP_FMAC2 soap_code_int(const struct soap_code_map*, const char*, long);
1927
SOAP_FMAC1 const char* SOAP_FMAC2 soap_code_str(const struct soap_code_map*, long);
1928
SOAP_FMAC1 long SOAP_FMAC2 soap_code_bits(const struct soap_code_map*, const char*);
1929
SOAP_FMAC1 const char* SOAP_FMAC2 soap_code_list(struct soap*, const struct soap_code_map*, long);
1931
SOAP_FMAC1 int SOAP_FMAC2 soap_getline(struct soap*, char*, int);
1932
SOAP_FMAC1 int SOAP_FMAC2 soap_begin_recv(struct soap*);
1933
SOAP_FMAC1 int SOAP_FMAC2 soap_end_recv(struct soap*);
1935
SOAP_FMAC1 void* SOAP_FMAC2 soap_malloc(struct soap*, size_t);
1936
SOAP_FMAC1 void SOAP_FMAC2 soap_dealloc(struct soap*, void*);
1937
SOAP_FMAC1 struct soap_clist * SOAP_FMAC2 soap_link(struct soap*, void*, int, int, int (*fdelete)(struct soap_clist*));
1938
SOAP_FMAC1 void SOAP_FMAC2 soap_unlink(struct soap*, const void*);
1939
SOAP_FMAC1 void SOAP_FMAC2 soap_free_temp(struct soap*);
1940
SOAP_FMAC1 void SOAP_FMAC2 soap_del(struct soap*);
1942
SOAP_FMAC1 void* SOAP_FMAC2 soap_track_malloc(struct soap*, const char*, int, size_t);
1943
SOAP_FMAC1 void SOAP_FMAC2 soap_track_free(struct soap*, const char*, int, void*);
1945
#ifndef WITH_NOIDREF
1946
SOAP_FMAC1 int SOAP_FMAC2 soap_lookup_type(struct soap*, const char *id);
1947
SOAP_FMAC1 void* SOAP_FMAC2 soap_id_lookup(struct soap*, const char *id, void **p, int t, size_t n, unsigned int k);
1948
SOAP_FMAC1 void* SOAP_FMAC2 soap_id_forward(struct soap*, const char *id, void *p, size_t len, int st, int tt, size_t n, unsigned int k, void(*fcopy)(struct soap*, int, int, void*, size_t, const void*, size_t));
1950
SOAP_FMAC1 void* SOAP_FMAC2 soap_id_enter(struct soap*, const char *id, void *p, int t, size_t n, unsigned int k, const char *type, const char *arrayType, void *(*finstantiate)(struct soap*, int, const char*, const char*, size_t*));
1951
SOAP_FMAC1 void SOAP_FMAC2 soap_fcopy(struct soap *soap, int st, int tt, void *p, size_t, const void *q, size_t n);
1953
SOAP_FMAC1 int SOAP_FMAC2 soap_size(const int *, int);
1954
SOAP_FMAC1 int SOAP_FMAC2 soap_getoffsets(const char *, const int *, int *, int);
1955
SOAP_FMAC1 int SOAP_FMAC2 soap_getsize(const char *, const char *, int *);
1956
SOAP_FMAC1 int SOAP_FMAC2 soap_getsizes(const char *, int *, int);
1957
SOAP_FMAC1 int SOAP_FMAC2 soap_getposition(const char *, int *);
1959
SOAP_FMAC1 char* SOAP_FMAC2 soap_putsize(struct soap*, const char *, int);
1960
SOAP_FMAC1 char* SOAP_FMAC2 soap_putsizesoffsets(struct soap*, const char *, const int *, const int *, int);
1961
SOAP_FMAC1 char* SOAP_FMAC2 soap_putsizes(struct soap*, const char *, const int *, int);
1962
SOAP_FMAC1 char* SOAP_FMAC2 soap_putoffset(struct soap*, int);
1963
SOAP_FMAC1 char* SOAP_FMAC2 soap_putoffsets(struct soap*, const int *, int);
1965
SOAP_FMAC1 int SOAP_FMAC2 soap_closesock(struct soap*);
1967
SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_new(void);
1968
SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_new1(soap_mode);
1969
SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_new2(soap_mode, soap_mode);
1970
SOAP_FMAC1 void SOAP_FMAC2 soap_free(struct soap*);
1971
SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_copy(struct soap*);
1972
SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_copy_context(struct soap*, struct soap*);
1973
SOAP_FMAC1 void SOAP_FMAC2 soap_copy_stream(struct soap*, struct soap*);
1974
SOAP_FMAC1 void SOAP_FMAC2 soap_init(struct soap*);
1975
SOAP_FMAC1 void SOAP_FMAC2 soap_init1(struct soap*, soap_mode);
1976
SOAP_FMAC1 void SOAP_FMAC2 soap_init2(struct soap*, soap_mode, soap_mode);
1977
SOAP_FMAC1 void SOAP_FMAC2 soap_done(struct soap*);
1978
SOAP_FMAC1 void SOAP_FMAC2 soap_cleanup(struct soap*);
1979
SOAP_FMAC1 void SOAP_FMAC2 soap_begin(struct soap*);
1980
SOAP_FMAC1 void SOAP_FMAC2 soap_end(struct soap*);
1981
SOAP_FMAC1 void SOAP_FMAC2 soap_delete(struct soap*, void*);
1984
SOAP_FMAC1 void SOAP_FMAC2 soap_set_recv_logfile(struct soap*, const char*);
1985
SOAP_FMAC1 void SOAP_FMAC2 soap_set_sent_logfile(struct soap*, const char*);
1986
SOAP_FMAC1 void SOAP_FMAC2 soap_set_test_logfile(struct soap*, const char*);
1987
SOAP_FMAC1 void SOAP_FMAC2 soap_close_logfiles(struct soap*);
1988
SOAP_FMAC1 void SOAP_FMAC2 soap_open_logfile(struct soap*, int);
1991
SOAP_FMAC1 const char* SOAP_FMAC2 soap_value(struct soap*);
1993
SOAP_FMAC1 int SOAP_FMAC2 soap_match_tag(struct soap*, const char*, const char *);
1994
SOAP_FMAC1 int SOAP_FMAC2 soap_match_array(struct soap*, const char*);
1996
SOAP_FMAC1 int SOAP_FMAC2 soap_element(struct soap*, const char*, int, const char*);
1997
SOAP_FMAC1 int SOAP_FMAC2 soap_element_begin_out(struct soap*, const char *tag, int id, const char *type);
1998
SOAP_FMAC1 int SOAP_FMAC2 soap_array_begin_out(struct soap*, const char *tag, int id, const char *type, const char *offset);
1999
SOAP_FMAC1 int SOAP_FMAC2 soap_element_ref(struct soap*, const char *tag, int id, int href);
2000
SOAP_FMAC1 int SOAP_FMAC2 soap_element_href(struct soap*, const char *tag, int id, const char *ref, const char *val);
2001
SOAP_FMAC1 int SOAP_FMAC2 soap_element_null(struct soap*, const char *tag, int id, const char *type);
2002
SOAP_FMAC1 int SOAP_FMAC2 soap_element_id(struct soap*, const char *tag, int id, const void *p, const struct soap_array *a, int d, const char *type, int n);
2003
SOAP_FMAC1 int SOAP_FMAC2 soap_element_result(struct soap*, const char *tag);
2004
SOAP_FMAC1 void SOAP_FMAC2 soap_check_result(struct soap*, const char *tag);
2005
SOAP_FMAC1 int SOAP_FMAC2 soap_element_end_out(struct soap*, const char *tag);
2006
SOAP_FMAC1 int SOAP_FMAC2 soap_element_start_end_out(struct soap*, const char *tag);
2008
SOAP_FMAC1 int SOAP_FMAC2 soap_attribute(struct soap*, const char*, const char*);
2010
SOAP_FMAC1 int SOAP_FMAC2 soap_element_begin_in(struct soap*, const char *tag, int nillable, const char *type);
2012
SOAP_FMAC1 int SOAP_FMAC2 soap_element_end_in(struct soap*, const char *tag);
2014
SOAP_FMAC1 int SOAP_FMAC2 soap_peek_element(struct soap*);
2016
SOAP_FMAC1 void SOAP_FMAC2 soap_retry(struct soap*);
2017
SOAP_FMAC1 void SOAP_FMAC2 soap_revert(struct soap*);
2019
SOAP_FMAC1 char* SOAP_FMAC2 soap_strdup(struct soap*, const char*);
2020
SOAP_FMAC1 const char * SOAP_FMAC2 soap_strsearch(const char *big, const char *little);
2022
SOAP_FMAC1 int SOAP_FMAC2 soap_string_out(struct soap*, const char *s, int flag);
2023
SOAP_FMAC1 char* SOAP_FMAC2 soap_string_in(struct soap*, int, long, long);
2026
SOAP_FMAC1 int SOAP_FMAC2 soap_wstring_out(struct soap*, const wchar_t *s, int flag);
2027
SOAP_FMAC1 wchar_t* SOAP_FMAC2 soap_wstring_in(struct soap*, int, long, long);
2030
SOAP_FMAC1 int SOAP_FMAC2 soap_match_namespace(struct soap*, const char *, const char*, size_t n1, size_t n2);
2032
SOAP_FMAC1 int SOAP_FMAC2 soap_set_namespaces(struct soap*, const struct Namespace*);
2033
SOAP_FMAC1 void SOAP_FMAC2 soap_set_local_namespaces(struct soap*);
2035
SOAP_FMAC1 void SOAP_FMAC2 soap_pop_namespace(struct soap*);
2036
SOAP_FMAC1 int SOAP_FMAC2 soap_push_namespace(struct soap*, const char *,const char *);
2037
SOAP_FMAC1 const char* SOAP_FMAC2 soap_current_namespace(struct soap *soap, const char *tag);
2039
SOAP_FMAC1 struct soap_nlist* SOAP_FMAC2 soap_lookup_ns(struct soap *soap, const char *tag, size_t n);
2041
SOAP_FMAC1 int SOAP_FMAC2 soap_store_lab(struct soap*, const char*, size_t);
2042
SOAP_FMAC1 int SOAP_FMAC2 soap_append_lab(struct soap*, const char*, size_t);
2044
SOAP_FMAC1 int SOAP_FMAC2 soap_new_block(struct soap*);
2045
SOAP_FMAC1 void* SOAP_FMAC2 soap_push_block(struct soap*, size_t);
2046
SOAP_FMAC1 void SOAP_FMAC2 soap_pop_block(struct soap*);
2047
SOAP_FMAC1 size_t SOAP_FMAC2 soap_size_block(struct soap*, size_t);
2048
SOAP_FMAC1 char* SOAP_FMAC2 soap_first_block(struct soap*);
2049
SOAP_FMAC1 char* SOAP_FMAC2 soap_next_block(struct soap*);
2050
SOAP_FMAC1 size_t SOAP_FMAC2 soap_block_size(struct soap*);
2051
SOAP_FMAC1 char* SOAP_FMAC2 soap_save_block(struct soap*, char*, int);
2052
SOAP_FMAC1 void SOAP_FMAC2 soap_end_block(struct soap*);
2054
SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_begin_out(struct soap*);
2055
SOAP_FMAC1 int soap_envelope_end_out(struct soap*);
2057
SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_begin_in(struct soap*);
2058
SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_end_in(struct soap*);
2060
SOAP_FMAC1 int SOAP_FMAC2 soap_body_begin_out(struct soap*);
2061
SOAP_FMAC1 int SOAP_FMAC2 soap_body_end_out(struct soap*);
2063
SOAP_FMAC1 int SOAP_FMAC2 soap_body_begin_in(struct soap*);
2064
SOAP_FMAC1 int SOAP_FMAC2 soap_body_end_in(struct soap*);
2066
SOAP_FMAC1 int SOAP_FMAC2 soap_recv_header(struct soap*);
2068
SOAP_FMAC1 int SOAP_FMAC2 soap_response(struct soap*, int);
2070
SOAP_FMAC1 int SOAP_FMAC2 soap_send_empty_response(struct soap*, int status);
2071
SOAP_FMAC1 int SOAP_FMAC2 soap_recv_empty_response(struct soap*);
2073
SOAP_FMAC1 int SOAP_FMAC2 soap_send_fault(struct soap*);
2074
SOAP_FMAC1 int SOAP_FMAC2 soap_recv_fault(struct soap*);
2076
#ifndef WITH_NOSTDLIB
2077
SOAP_FMAC1 void SOAP_FMAC2 soap_print_fault(struct soap*, FILE*);
2078
SOAP_FMAC1 char* SOAP_FMAC2 soap_sprint_fault(struct soap*, char*, size_t);
2079
SOAP_FMAC1 void SOAP_FMAC2 soap_print_fault_location(struct soap*, FILE*);
2082
SOAP_FMAC1 int SOAP_FMAC2 soap_s2byte(struct soap*, const char*, char*);
2083
SOAP_FMAC1 int SOAP_FMAC2 soap_s2short(struct soap*, const char*, short*);
2084
SOAP_FMAC1 int SOAP_FMAC2 soap_s2int(struct soap*, const char*, int*);
2085
SOAP_FMAC1 int SOAP_FMAC2 soap_s2long(struct soap*, const char*, long*);
2086
SOAP_FMAC1 int SOAP_FMAC2 soap_s2LONG64(struct soap*, const char*, LONG64*);
2087
SOAP_FMAC1 int SOAP_FMAC2 soap_s2float(struct soap*, const char*, float*);
2088
SOAP_FMAC1 int SOAP_FMAC2 soap_s2double(struct soap*, const char*, double*);
2089
SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedByte(struct soap*, const char*, unsigned char*);
2090
SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedShort(struct soap*, const char*, unsigned short*);
2091
SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedInt(struct soap*, const char*, unsigned int*);
2092
SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedLong(struct soap*, const char*, unsigned long*);
2093
SOAP_FMAC1 int SOAP_FMAC2 soap_s2ULONG64(struct soap*, const char*, ULONG64*);
2094
SOAP_FMAC1 int SOAP_FMAC2 soap_s2string(struct soap*, const char*, char**);
2095
SOAP_FMAC1 int SOAP_FMAC2 soap_s2QName(struct soap*, const char*, char**);
2098
SOAP_FMAC1 int SOAP_FMAC2 soap_s2wchar(struct soap*, const char*, wchar_t**);
2099
SOAP_FMAC1 int SOAP_FMAC2 soap_s2dateTime(struct soap*, const char*, time_t*);
2100
SOAP_FMAC1 char* SOAP_FMAC2 soap_s2base64(struct soap*, const unsigned char*, char*, int);
2101
SOAP_FMAC1 char* SOAP_FMAC2 soap_s2hex(struct soap*, const unsigned char*, char*, int);
2104
SOAP_FMAC1 const char* SOAP_FMAC2 soap_byte2s(struct soap*, char);
2105
SOAP_FMAC1 const char* SOAP_FMAC2 soap_short2s(struct soap*, short);
2106
SOAP_FMAC1 const char* SOAP_FMAC2 soap_int2s(struct soap*, int);
2107
SOAP_FMAC1 const char* SOAP_FMAC2 soap_long2s(struct soap*, long);
2108
SOAP_FMAC1 const char* SOAP_FMAC2 soap_LONG642s(struct soap*, LONG64);
2109
SOAP_FMAC1 const char* SOAP_FMAC2 soap_float2s(struct soap*, float);
2110
SOAP_FMAC1 const char* SOAP_FMAC2 soap_double2s(struct soap*, double);
2111
SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedByte2s(struct soap*, unsigned char);
2112
SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedShort2s(struct soap*, unsigned short);
2113
SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedInt2s(struct soap*, unsigned int);
2114
SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedLong2s(struct soap*, unsigned long);
2115
SOAP_FMAC1 const char* SOAP_FMAC2 soap_ULONG642s(struct soap*, ULONG64);
2116
SOAP_FMAC1 const char* SOAP_FMAC2 soap_QName2s(struct soap*, const char*);
2119
SOAP_FMAC1 const char* SOAP_FMAC2 soap_wchar2s(struct soap*, const wchar_t*);
2120
SOAP_FMAC1 const char* SOAP_FMAC2 soap_dateTime2s(struct soap*, time_t);
2121
SOAP_FMAC1 const char* SOAP_FMAC2 soap_base642s(struct soap*, const char*, char*, size_t, int*);
2122
SOAP_FMAC1 const char* SOAP_FMAC2 soap_hex2s(struct soap*, const char*, char*, size_t, int*);
2126
SOAP_FMAC1 int* SOAP_FMAC2 soap_inint(struct soap*, const char *tag, int *p, const char *, int);
2127
SOAP_FMAC1 char* SOAP_FMAC2 soap_inbyte(struct soap*, const char *tag, char *p, const char *, int);
2128
SOAP_FMAC1 long* SOAP_FMAC2 soap_inlong(struct soap*, const char *tag, long *p, const char *, int);
2129
SOAP_FMAC1 LONG64* SOAP_FMAC2 soap_inLONG64(struct soap*, const char *tag, LONG64 *p, const char *, int);
2130
SOAP_FMAC1 short* SOAP_FMAC2 soap_inshort(struct soap*, const char *tag, short *p, const char *, int);
2131
SOAP_FMAC1 float* SOAP_FMAC2 soap_infloat(struct soap*, const char *tag, float *p, const char *, int);
2132
SOAP_FMAC1 double* SOAP_FMAC2 soap_indouble(struct soap*, const char *tag, double *p, const char *, int);
2133
SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_inunsignedByte(struct soap*, const char *tag, unsigned char *p, const char *, int);
2134
SOAP_FMAC1 unsigned short* SOAP_FMAC2 soap_inunsignedShort(struct soap*, const char *tag, unsigned short *p, const char *, int);
2135
SOAP_FMAC1 unsigned int* SOAP_FMAC2 soap_inunsignedInt(struct soap*, const char *tag, unsigned int *p, const char *, int);
2136
SOAP_FMAC1 unsigned long* SOAP_FMAC2 soap_inunsignedLong(struct soap*, const char *tag, unsigned long *p, const char *, int);
2137
SOAP_FMAC1 ULONG64* SOAP_FMAC2 soap_inULONG64(struct soap*, const char *tag, ULONG64 *p, const char *, int);
2138
SOAP_FMAC1 char** SOAP_FMAC2 soap_instring(struct soap*, const char *tag, char **p, const char *, int, int, long, long);
2139
SOAP_FMAC1 char** SOAP_FMAC2 soap_inliteral(struct soap*, const char *tag, char **p);
2142
SOAP_FMAC1 time_t* SOAP_FMAC2 soap_indateTime(struct soap*, const char *tag, time_t *p, const char *, int);
2143
SOAP_FMAC1 time_t SOAP_FMAC2 soap_timegm(struct tm*);
2147
SOAP_FMAC1 wchar_t** SOAP_FMAC2 soap_inwstring(struct soap*, const char *tag, wchar_t **p, const char *, int, long, long);
2148
SOAP_FMAC1 wchar_t** SOAP_FMAC2 soap_inwliteral(struct soap*, const char *tag, wchar_t **p);
2151
SOAP_FMAC1 int SOAP_FMAC2 soap_outbyte(struct soap*, const char *tag, int id, const char *p, const char *, int);
2152
SOAP_FMAC1 int SOAP_FMAC2 soap_outshort(struct soap*, const char *tag, int id, const short *p, const char *, int);
2153
SOAP_FMAC1 int SOAP_FMAC2 soap_outint(struct soap*, const char *tag, int id, const int *p, const char *, int);
2154
SOAP_FMAC1 int SOAP_FMAC2 soap_outlong(struct soap*, const char *tag, int id, const long *p, const char *, int);
2155
SOAP_FMAC1 int SOAP_FMAC2 soap_outLONG64(struct soap*, const char *tag, int id, const LONG64 *p, const char *, int);
2156
SOAP_FMAC1 int SOAP_FMAC2 soap_outfloat(struct soap*, const char *tag, int id, const float *p, const char *, int);
2157
SOAP_FMAC1 int SOAP_FMAC2 soap_outdouble(struct soap*, const char *tag, int id, const double *p, const char *, int);
2158
SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedByte(struct soap*, const char *tag, int id, const unsigned char *p, const char *, int);
2159
SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedShort(struct soap*, const char *tag, int id, const unsigned short *p, const char *, int);
2160
SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedInt(struct soap*, const char *tag, int id, const unsigned int *p, const char *, int);
2161
SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedLong(struct soap*, const char *tag, int id, const unsigned long *p, const char *, int);
2162
SOAP_FMAC1 int SOAP_FMAC2 soap_outULONG64(struct soap*, const char *tag, int id, const ULONG64 *p, const char *, int);
2163
SOAP_FMAC1 int SOAP_FMAC2 soap_outstring(struct soap*, const char *tag, int id, char *const*p, const char *, int);
2164
SOAP_FMAC1 int SOAP_FMAC2 soap_outliteral(struct soap*, const char *tag, char *const*p, const char *type);
2167
SOAP_FMAC1 int SOAP_FMAC2 soap_outdateTime(struct soap*, const char *tag, int id, const time_t *p, const char *, int);
2171
SOAP_FMAC1 int SOAP_FMAC2 soap_outwstring(struct soap*, const char *tag, int id, wchar_t *const*p, const char *, int);
2172
SOAP_FMAC1 int SOAP_FMAC2 soap_outwliteral(struct soap*, const char *tag, wchar_t *const*p, const char *type);
2176
SOAP_FMAC1 int SOAP_FMAC2 soap_attachment(struct soap *, const char*, int, const void*, const struct soap_array*, const char*, const char*, const char*, int, const char*, int);
2177
SOAP_FMAC1 int SOAP_FMAC2 soap_move(struct soap*, long);
2178
SOAP_FMAC1 size_t SOAP_FMAC2 soap_tell(struct soap*);
2179
SOAP_FMAC1 char* SOAP_FMAC2 soap_dime_option(struct soap*, unsigned short, const char*);
2180
SOAP_FMAC1 int SOAP_FMAC2 soap_getdimehdr(struct soap*);
2181
SOAP_FMAC1 int SOAP_FMAC2 soap_getdime(struct soap*);
2182
SOAP_FMAC1 int SOAP_FMAC2 soap_putdimehdr(struct soap*);
2183
SOAP_FMAC1 int SOAP_FMAC2 soap_putdime(struct soap*);
2184
SOAP_FMAC1 int SOAP_FMAC2 soap_getmimehdr(struct soap*);
2185
SOAP_FMAC1 int SOAP_FMAC2 soap_getmime(struct soap*);
2186
SOAP_FMAC1 int SOAP_FMAC2 soap_putmimehdr(struct soap*, struct soap_multipart*);
2187
SOAP_FMAC1 int SOAP_FMAC2 soap_putmime(struct soap*);
2188
SOAP_FMAC1 void SOAP_FMAC2 soap_set_dime(struct soap*);
2189
SOAP_FMAC1 void SOAP_FMAC2 soap_set_mime(struct soap*, const char *boundary, const char *start);
2190
SOAP_FMAC1 void SOAP_FMAC2 soap_clr_dime(struct soap*);
2191
SOAP_FMAC1 void SOAP_FMAC2 soap_clr_mime(struct soap*);
2192
SOAP_FMAC1 int SOAP_FMAC2 soap_set_dime_attachment(struct soap*, char *ptr, size_t size, const char *type, const char *id, unsigned short optype, const char *option);
2193
SOAP_FMAC1 int SOAP_FMAC2 soap_set_mime_attachment(struct soap*, char *ptr, size_t size, enum soap_mime_encoding encoding, const char *type, const char *id, const char *location, const char *description);
2194
SOAP_FMAC1 void SOAP_FMAC2 soap_post_check_mime_attachments(struct soap *soap);
2195
SOAP_FMAC1 int SOAP_FMAC2 soap_check_mime_attachments(struct soap *soap);
2196
SOAP_FMAC1 struct soap_multipart* SOAP_FMAC2 soap_get_mime_attachment(struct soap *soap, void *handle);
2197
SOAP_FMAC1 struct soap_multipart* SOAP_FMAC2 soap_next_multipart(struct soap_multipart*);
2198
SOAP_FMAC1 int SOAP_FMAC2 soap_match_cid(struct soap*, const char*, const char*);
2201
SOAP_FMAC1 int SOAP_FMAC2 soap_register_plugin_arg(struct soap*, int (*fcreate)(struct soap*, struct soap_plugin*, void*), void*);
2202
SOAP_FMAC1 void* SOAP_FMAC2 soap_lookup_plugin(struct soap*, const char*);
2204
SOAP_FMAC1 const char* SOAP_FMAC2 soap_attr_value(struct soap *soap, const char *name, int flag);
2205
SOAP_FMAC1 int SOAP_FMAC2 soap_set_attr(struct soap *soap, const char *name, const char *value);
2206
SOAP_FMAC1 void SOAP_FMAC2 soap_clr_attr(struct soap *soap);
2209
SOAP_FMAC1 void SOAP_FMAC2 soap_getcookies(struct soap *soap, const char *val);
2210
SOAP_FMAC1 size_t SOAP_FMAC2 soap_encode_cookie(const char*, char*, size_t);
2211
SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_set_cookie(struct soap*, const char*, const char*, const char*, const char*);
2212
SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_cookie(struct soap*, const char*, const char*, const char*);
2213
SOAP_FMAC1 extern char* SOAP_FMAC2 soap_cookie_value(struct soap*, const char*, const char*, const char*);
2214
SOAP_FMAC1 extern char* SOAP_FMAC2 soap_env_cookie_value(struct soap*, const char*, const char*, const char*);
2215
SOAP_FMAC1 extern time_t SOAP_FMAC2 soap_cookie_expire(struct soap*, const char*, const char*, const char*);
2216
SOAP_FMAC1 extern int SOAP_FMAC2 soap_set_cookie_expire(struct soap*, const char*, long, const char*, const char*);
2217
SOAP_FMAC1 extern int SOAP_FMAC2 soap_set_cookie_session(struct soap*, const char*, const char*, const char*);
2218
SOAP_FMAC1 extern int SOAP_FMAC2 soap_clr_cookie_session(struct soap*, const char*, const char*, const char*);
2219
SOAP_FMAC1 extern void SOAP_FMAC2 soap_clr_cookie(struct soap*, const char*, const char*, const char*);
2220
SOAP_FMAC1 extern int SOAP_FMAC2 soap_getenv_cookies(struct soap*);
2221
SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_copy_cookies(struct soap*, struct soap*);
2222
SOAP_FMAC1 extern void SOAP_FMAC2 soap_free_cookies(struct soap*);