From bb55b1ed9c4d4018356ac9d076de739f728d2e6c Mon Sep 17 00:00:00 2001 From: Marcelo Roberto Jimenez Date: Mon, 15 Mar 2010 01:48:24 +0000 Subject: [PATCH] * SF Patch Tracker [ 2964687 ] Add new string based accessors to upnp object API As per email to pupnp-devel, this is the patch to add the _strget_ accessors for string-like objects in the interface. Will add a further patch shortly to udpate the sample programs. git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@488 119443c7-1b9e-41f8-b6fc-b9c35fce742c --- ChangeLog | 9 +++ upnp/inc/ActionComplete.h | 9 +++ upnp/inc/ActionRequest.h | 8 +- upnp/inc/Discovery.h | 12 ++- upnp/inc/Event.h | 3 +- upnp/inc/EventSubscribe.h | 2 + upnp/inc/FileInfo.h | 2 + upnp/inc/StateVarComplete.h | 3 + upnp/inc/StateVarRequest.h | 9 ++- upnp/inc/SubscriptionRequest.h | 3 + upnp/src/api/ActionComplete.c | 5 ++ upnp/src/api/ActionRequest.c | 24 +++++- upnp/src/api/Discovery.c | 44 ++++++++++- upnp/src/api/Event.c | 7 +- upnp/src/api/EventSubscribe.c | 10 +++ upnp/src/api/FileInfo.c | 10 +++ upnp/src/api/StateVarComplete.c | 15 ++++ upnp/src/api/StateVarRequest.c | 29 ++++++- upnp/src/api/SubscriptionRequest.c | 15 ++++ upnp/src/genlib/client_table/client_table.c | 83 +++++++++++++-------- upnp/src/soap/soap_device.c | 4 +- 21 files changed, 257 insertions(+), 49 deletions(-) diff --git a/ChangeLog b/ChangeLog index c770bdc..b9ac078 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,15 @@ Version 1.8.0 ******************************************************************************* +2010-03-14 Marcelo Jimenez + * SF Patch Tracker [ 2964687 ] Add new string based accessors to upnp + object API + + As per email to pupnp-devel, this is the patch to add the _strget_ + accessors for string-like objects in the interface. + + Will add a further patch shortly to udpate the sample programs. + 2008-06-27 Marcelo Jimenez * Nicholas Kraft's patch to fix some IPv6 copy/paste issues. He reported to be getting infinite loops with the svn code. diff --git a/upnp/inc/ActionComplete.h b/upnp/inc/ActionComplete.h index eaf3d12..41274dc 100644 --- a/upnp/inc/ActionComplete.h +++ b/upnp/inc/ActionComplete.h @@ -90,6 +90,15 @@ EXPORT_SPEC const UpnpString *UpnpActionComplete_get_CtrlUrl( /*! [in] \b this pointer. */ const UpnpActionComplete *p); +/*! + * \brief Control URL getter as a C string + * + * \return The control URL string. + */ +EXPORT_SPEC const char *UpnpActionComplete_get_CtrlUrl_cstr( + /*! [in] \b this pointer. */ + const UpnpActionComplete *p); + /*! * \brief Control URL setter. diff --git a/upnp/inc/ActionRequest.h b/upnp/inc/ActionRequest.h index 281f7b9..89f9f03 100644 --- a/upnp/inc/ActionRequest.h +++ b/upnp/inc/ActionRequest.h @@ -50,20 +50,24 @@ EXPORT_SPEC void UpnpActionRequest_set_Socket(UpnpActionRequest *p, int n); /*! The error string in case of error */ EXPORT_SPEC const UpnpString *UpnpActionRequest_get_ErrStr(const UpnpActionRequest *p); +EXPORT_SPEC const char *UpnpActionRequest_get_ErrStr_cstr(const UpnpActionRequest *p); EXPORT_SPEC void UpnpActionRequest_set_ErrStr(UpnpActionRequest *p, const UpnpString *s); EXPORT_SPEC void UpnpActionRequest_strcpy_ErrStr(UpnpActionRequest *p, const char *s); /*! The Action Name */ EXPORT_SPEC const UpnpString *UpnpActionRequest_get_ActionName(const UpnpActionRequest *p); +EXPORT_SPEC const char *UpnpActionRequest_get_ActionName_cstr(const UpnpActionRequest *p); EXPORT_SPEC void UpnpActionRequest_set_ActionName(UpnpActionRequest *p, const UpnpString *s); EXPORT_SPEC void UpnpActionRequest_strcpy_ActionName(UpnpActionRequest *p, const char *s); /*! The unique device ID */ EXPORT_SPEC const UpnpString *UpnpActionRequest_get_DevUDN(const UpnpActionRequest *p); +EXPORT_SPEC const char *UpnpActionRequest_get_DevUDN_cstr(const UpnpActionRequest *p); EXPORT_SPEC void UpnpActionRequest_set_DevUDN(UpnpActionRequest *p, const UpnpString *s); /*! The service ID */ EXPORT_SPEC const UpnpString *UpnpActionRequest_get_ServiceID(const UpnpActionRequest *p); +EXPORT_SPEC const char *UpnpActionRequest_get_ServiceID_cstr(const UpnpActionRequest *p); EXPORT_SPEC void UpnpActionRequest_set_ServiceID(UpnpActionRequest *p, const UpnpString *s); /*! The DOM document describing the action */ @@ -79,8 +83,8 @@ EXPORT_SPEC IXML_Document *UpnpActionRequest_get_SoapHeader(const UpnpActionRequ EXPORT_SPEC void UpnpActionRequest_set_SoapHeader(UpnpActionRequest *p, IXML_Document *d); /*! IP address of the control point requesting this action */ -EXPORT_SPEC struct sockaddr *UpnpActionRequest_get_CtrlPtIPAddr(const UpnpActionRequest *p); -EXPORT_SPEC void UpnpActionRequest_set_CtrlPtIPAddr(UpnpActionRequest *p, struct sockaddr *sa); +EXPORT_SPEC const struct sockaddr *UpnpActionRequest_get_CtrlPtIPAddr(const UpnpActionRequest *p); +EXPORT_SPEC void UpnpActionRequest_set_CtrlPtIPAddr(UpnpActionRequest *p, const struct sockaddr *sa); #ifdef __cplusplus diff --git a/upnp/inc/Discovery.h b/upnp/inc/Discovery.h index af58e84..77b39a0 100644 --- a/upnp/inc/Discovery.h +++ b/upnp/inc/Discovery.h @@ -49,50 +49,58 @@ EXPORT_SPEC void UpnpDiscovery_set_Expires(UpnpDiscovery *p, int n); /*! The unique device identifier. */ EXPORT_SPEC const UpnpString *UpnpDiscovery_get_DeviceID(const UpnpDiscovery *p); +EXPORT_SPEC const char *UpnpDiscovery_get_DeviceID_cstr(const UpnpDiscovery *p); EXPORT_SPEC void UpnpDiscovery_set_DeviceID(UpnpDiscovery *p, const UpnpString *s); EXPORT_SPEC void UpnpDiscovery_strcpy_DeviceID(UpnpDiscovery *p, const char *s); /*! The device type. */ EXPORT_SPEC const UpnpString *UpnpDiscovery_get_DeviceType(const UpnpDiscovery *p); +EXPORT_SPEC const char *UpnpDiscovery_get_DeviceType_cstr(const UpnpDiscovery *p); EXPORT_SPEC void UpnpDiscovery_set_DeviceType(UpnpDiscovery *p, const UpnpString *s); EXPORT_SPEC void UpnpDiscovery_strcpy_DeviceType(UpnpDiscovery *p, const char *s); /*! The ServiceType. */ EXPORT_SPEC const UpnpString *UpnpDiscovery_get_ServiceType(const UpnpDiscovery *p); +EXPORT_SPEC const char *UpnpDiscovery_get_ServiceType_cstr(const UpnpDiscovery *p); EXPORT_SPEC void UpnpDiscovery_set_ServiceType(UpnpDiscovery *p, const UpnpString *s); EXPORT_SPEC void UpnpDiscovery_strcpy_ServiceType(UpnpDiscovery *p, const char *s); /*! The service version. */ EXPORT_SPEC const UpnpString *UpnpDiscovery_get_ServiceVer(const UpnpDiscovery *p); +EXPORT_SPEC const char *UpnpDiscovery_get_ServiceVer_cstr(const UpnpDiscovery *p); EXPORT_SPEC void UpnpDiscovery_set_ServiceVer(UpnpDiscovery *p, const UpnpString *s); EXPORT_SPEC void UpnpDiscovery_strcpy_ServiceVer(UpnpDiscovery *p, const char *s); /*! The URL to the UPnP description document for the device. */ EXPORT_SPEC const UpnpString *UpnpDiscovery_get_Location(const UpnpDiscovery *p); +EXPORT_SPEC const char *UpnpDiscovery_get_Location_cstr(const UpnpDiscovery *p); EXPORT_SPEC void UpnpDiscovery_set_Location(UpnpDiscovery *p, const UpnpString *s); EXPORT_SPEC void UpnpDiscovery_strcpy_Location(UpnpDiscovery *p, const char *s); EXPORT_SPEC void UpnpDiscovery_strncpy_Location(UpnpDiscovery *p, const char *s, int n); /*! The operating system the device is running. */ EXPORT_SPEC const UpnpString *UpnpDiscovery_get_Os(const UpnpDiscovery *p); +EXPORT_SPEC const char *UpnpDiscovery_get_Os_cstr(const UpnpDiscovery *p); EXPORT_SPEC void UpnpDiscovery_set_Os(UpnpDiscovery *p, const UpnpString *s); EXPORT_SPEC void UpnpDiscovery_strcpy_Os(UpnpDiscovery *p, const char *s); EXPORT_SPEC void UpnpDiscovery_strncpy_Os(UpnpDiscovery *p, const char *s, int n); /*! Date when the response was generated. */ EXPORT_SPEC const UpnpString *UpnpDiscovery_get_Date(const UpnpDiscovery *p); +EXPORT_SPEC const char *UpnpDiscovery_get_Date_cstr(const UpnpDiscovery *p); EXPORT_SPEC void UpnpDiscovery_set_Date(UpnpDiscovery *p, const UpnpString *s); EXPORT_SPEC void UpnpDiscovery_strcpy_Date(UpnpDiscovery *p, const char *s); /*! Confirmation that the MAN header was understood by the device. */ EXPORT_SPEC const UpnpString *UpnpDiscovery_get_Ext(const UpnpDiscovery *p); +EXPORT_SPEC const char *UpnpDiscovery_get_Ext_cstr(const UpnpDiscovery *p); EXPORT_SPEC void UpnpDiscovery_set_Ext(UpnpDiscovery *p, const UpnpString *s); EXPORT_SPEC void UpnpDiscovery_strcpy_Ext(UpnpDiscovery *p, const char *s); EXPORT_SPEC void UpnpDiscovery_strncpy_Ext(UpnpDiscovery *p, const char *s, int n); /*! The host address of the device responding to the search. */ -EXPORT_SPEC struct sockaddr *UpnpDiscovery_get_DestAddr(const UpnpDiscovery *p); -EXPORT_SPEC void UpnpDiscovery_set_DestAddr(UpnpDiscovery *p, struct sockaddr *sa); +EXPORT_SPEC const struct sockaddr *UpnpDiscovery_get_DestAddr(const UpnpDiscovery *p); +EXPORT_SPEC void UpnpDiscovery_set_DestAddr(UpnpDiscovery *p, const struct sockaddr *sa); #ifdef __cplusplus diff --git a/upnp/inc/Event.h b/upnp/inc/Event.h index e0bd835..8da92ba 100644 --- a/upnp/inc/Event.h +++ b/upnp/inc/Event.h @@ -48,7 +48,8 @@ EXPORT_SPEC IXML_Document *UpnpEvent_get_ChangedVariables(const UpnpEvent *p); EXPORT_SPEC void UpnpEvent_set_ChangedVariables(UpnpEvent *p, IXML_Document *d); /*! The subscription ID for this subscription. */ -EXPORT_SPEC UpnpString *UpnpEvent_get_SID(const UpnpEvent *p); +EXPORT_SPEC const UpnpString *UpnpEvent_get_SID(const UpnpEvent *p); +EXPORT_SPEC const char *UpnpEvent_get_SID_cstr(const UpnpEvent *p); EXPORT_SPEC void UpnpEvent_set_SID(UpnpEvent *p, const UpnpString *s); diff --git a/upnp/inc/EventSubscribe.h b/upnp/inc/EventSubscribe.h index e0371ee..fb33f65 100644 --- a/upnp/inc/EventSubscribe.h +++ b/upnp/inc/EventSubscribe.h @@ -53,12 +53,14 @@ EXPORT_SPEC void UpnpEventSubscribe_set_TimeOut(UpnpEventSubscribe *p, int n); * this contains the SID from which the subscription is being * unsubscribed. */ EXPORT_SPEC const UpnpString *UpnpEventSubscribe_get_SID(const UpnpEventSubscribe *p); +EXPORT_SPEC const char *UpnpEventSubscribe_get_SID_cstr(const UpnpEventSubscribe *p); EXPORT_SPEC void UpnpEventSubscribe_set_SID(UpnpEventSubscribe *p, const UpnpString *s); EXPORT_SPEC void UpnpEventSubscribe_strcpy_SID(UpnpEventSubscribe *p, const char *s); /*! The event URL being subscribed to or removed from. */ EXPORT_SPEC const UpnpString *UpnpEventSubscribe_get_PublisherUrl(const UpnpEventSubscribe *p); +EXPORT_SPEC const char *UpnpEventSubscribe_get_PublisherUrl_cstr(const UpnpEventSubscribe *p); EXPORT_SPEC void UpnpEventSubscribe_set_PublisherUrl(UpnpEventSubscribe *p, const UpnpString *s); EXPORT_SPEC void UpnpEventSubscribe_strcpy_PublisherUrl(UpnpEventSubscribe *p, const char *s); diff --git a/upnp/inc/FileInfo.h b/upnp/inc/FileInfo.h index bb3a9d9..fead103 100644 --- a/upnp/inc/FileInfo.h +++ b/upnp/inc/FileInfo.h @@ -65,11 +65,13 @@ EXPORT_SPEC void UpnpFileInfo_set_IsReadable(UpnpFileInfo *p, int b); /*! The content type of the file. */ EXPORT_SPEC const DOMString UpnpFileInfo_get_ContentType(const UpnpFileInfo *p); +EXPORT_SPEC const char *UpnpFileInfo_get_ContentType_cstr(const UpnpFileInfo *p); EXPORT_SPEC void UpnpFileInfo_set_ContentType(UpnpFileInfo *p, const DOMString s); /*! Additional HTTP headers to return. Each header line should be * followed by "\r\n". */ EXPORT_SPEC const DOMString UpnpFileInfo_get_ExtraHeaders(const UpnpFileInfo *p); +EXPORT_SPEC const char *UpnpFileInfo_get_ExtraHeaders_cstr(const UpnpFileInfo *p); EXPORT_SPEC void UpnpFileInfo_set_ExtraHeaders(UpnpFileInfo *p, const DOMString s); diff --git a/upnp/inc/StateVarComplete.h b/upnp/inc/StateVarComplete.h index 6c379f7..7cdba9c 100644 --- a/upnp/inc/StateVarComplete.h +++ b/upnp/inc/StateVarComplete.h @@ -46,17 +46,20 @@ EXPORT_SPEC void UpnpStateVarComplete_set_ErrCode(UpnpStateVarComplete *p, int n /*! The control URL for the service. */ EXPORT_SPEC const UpnpString *UpnpStateVarComplete_get_CtrlUrl(const UpnpStateVarComplete *p); +EXPORT_SPEC const char *UpnpStateVarComplete_get_CtrlUrl_cstr(const UpnpStateVarComplete *p); EXPORT_SPEC void UpnpStateVarComplete_set_CtrlUrl(UpnpStateVarComplete *p, const UpnpString *s); EXPORT_SPEC void UpnpStateVarComplete_strcpy_CtrlUrl(UpnpStateVarComplete *p, const char *s); /*! The name of the variable. */ EXPORT_SPEC const UpnpString *UpnpStateVarComplete_get_StateVarName(const UpnpStateVarComplete *p); +EXPORT_SPEC const char *UpnpStateVarComplete_get_StateVarName_cstr(const UpnpStateVarComplete *p); EXPORT_SPEC void UpnpStateVarComplete_set_StateVarName(UpnpStateVarComplete *p, const UpnpString *s); EXPORT_SPEC void UpnpStateVarComplete_strcpy_StateVarName(UpnpStateVarComplete *p, const char *s); /*! The current value of the variable. This needs to be allocated by * the caller. When finished with it, the SDK frees this \b DOMString. */ EXPORT_SPEC const DOMString UpnpStateVarComplete_get_CurrentVal(const UpnpStateVarComplete *p); +EXPORT_SPEC const char *UpnpStateVarComplete_get_CurrentVal_cstr(const UpnpStateVarComplete *p); EXPORT_SPEC void UpnpStateVarComplete_set_CurrentVal(UpnpStateVarComplete *p, const DOMString s); diff --git a/upnp/inc/StateVarRequest.h b/upnp/inc/StateVarRequest.h index 462417e..082de91 100644 --- a/upnp/inc/StateVarRequest.h +++ b/upnp/inc/StateVarRequest.h @@ -51,29 +51,34 @@ EXPORT_SPEC void UpnpStateVarRequest_set_Socket(UpnpStateVarRequest *p, int n); /*! The error string in case of error */ EXPORT_SPEC const UpnpString *UpnpStateVarRequest_get_ErrStr(const UpnpStateVarRequest *p); +EXPORT_SPEC const char *UpnpStateVarRequest_get_ErrStr_cstr(const UpnpStateVarRequest *p); EXPORT_SPEC void UpnpStateVarRequest_set_ErrStr(UpnpStateVarRequest *p, const UpnpString *s); EXPORT_SPEC void UpnpStateVarRequest_strcpy_ErrStr(UpnpStateVarRequest *p, const char *s); /*! The unique device ID */ EXPORT_SPEC const UpnpString *UpnpStateVarRequest_get_DevUDN(const UpnpStateVarRequest *p); +EXPORT_SPEC const char *UpnpStateVarRequest_get_DevUDN_cstr(const UpnpStateVarRequest *p); EXPORT_SPEC void UpnpStateVarRequest_set_DevUDN(UpnpStateVarRequest *p, const UpnpString *s); /*! The service ID */ EXPORT_SPEC const UpnpString *UpnpStateVarRequest_get_ServiceID(const UpnpStateVarRequest *p); +EXPORT_SPEC const char *UpnpStateVarRequest_get_ServiceID_cstr(const UpnpStateVarRequest *p); EXPORT_SPEC void UpnpStateVarRequest_set_ServiceID(UpnpStateVarRequest *p, const UpnpString *s); /*! The name of the variable. */ EXPORT_SPEC const UpnpString *UpnpStateVarRequest_get_StateVarName(const UpnpStateVarRequest *p); +EXPORT_SPEC const char *UpnpStateVarRequest_get_StateVarName_cstr(const UpnpStateVarRequest *p); EXPORT_SPEC void UpnpStateVarRequest_set_StateVarName(UpnpStateVarRequest *p, const UpnpString *s); EXPORT_SPEC void UpnpStateVarRequest_strcpy_StateVarName(UpnpStateVarRequest *p, const char *s); /*! IP address of sender requesting the state variable. */ -EXPORT_SPEC struct sockaddr *UpnpStateVarRequest_get_CtrlPtIPAddr(const UpnpStateVarRequest *p); -EXPORT_SPEC void UpnpStateVarRequest_set_CtrlPtIPAddr(UpnpStateVarRequest *p, struct sockaddr *sa); +EXPORT_SPEC const struct sockaddr *UpnpStateVarRequest_get_CtrlPtIPAddr(const UpnpStateVarRequest *p); +EXPORT_SPEC void UpnpStateVarRequest_set_CtrlPtIPAddr(UpnpStateVarRequest *p, const struct sockaddr *sa); /*! The current value of the variable. This needs to be allocated by * the caller. When finished with it, the SDK frees this \b DOMString. */ EXPORT_SPEC const DOMString UpnpStateVarRequest_get_CurrentVal(const UpnpStateVarRequest *p); +EXPORT_SPEC const char *UpnpStateVarRequest_get_CurrentVal_cstr(const UpnpStateVarRequest *p); EXPORT_SPEC void UpnpStateVarRequest_set_CurrentVal(UpnpStateVarRequest *p, const DOMString s); diff --git a/upnp/inc/SubscriptionRequest.h b/upnp/inc/SubscriptionRequest.h index 3709ea3..8603d55 100644 --- a/upnp/inc/SubscriptionRequest.h +++ b/upnp/inc/SubscriptionRequest.h @@ -40,16 +40,19 @@ EXPORT_SPEC void UpnpSubscriptionRequest_assign(UpnpSubscriptionRequest *p, cons /*! The identifier for the service being subscribed to. */ EXPORT_SPEC const UpnpString *UpnpSubscriptionRequest_get_ServiceId(const UpnpSubscriptionRequest *p); +EXPORT_SPEC const char *UpnpSubscriptionRequest_get_ServiceId_cstr(const UpnpSubscriptionRequest *p); EXPORT_SPEC void UpnpSubscriptionRequest_set_ServiceId(UpnpSubscriptionRequest *p, const UpnpString *s); EXPORT_SPEC void UpnpSubscriptionRequest_strcpy_ServiceId(UpnpSubscriptionRequest *p, const char *s); /*! Universal device name. */ EXPORT_SPEC const UpnpString *UpnpSubscriptionRequest_get_UDN(const UpnpSubscriptionRequest *p); +EXPORT_SPEC const char *UpnpSubscriptionRequest_get_UDN_cstr(const UpnpSubscriptionRequest *p); EXPORT_SPEC void UpnpSubscriptionRequest_set_UDN(UpnpSubscriptionRequest *p, const UpnpString *s); EXPORT_SPEC void UpnpSubscriptionRequest_strcpy_UDN(UpnpSubscriptionRequest *p, const char *s); /*! The assigned subscription ID for this subscription. */ EXPORT_SPEC const UpnpString *UpnpSubscriptionRequest_get_SID(const UpnpSubscriptionRequest *p); +EXPORT_SPEC const char *UpnpSubscriptionRequest_get_SID_cstr(const UpnpSubscriptionRequest *p); EXPORT_SPEC void UpnpSubscriptionRequest_set_SID(UpnpSubscriptionRequest *p, const UpnpString *s); EXPORT_SPEC void UpnpSubscriptionRequest_strcpy_SID(UpnpSubscriptionRequest *p, const char *s); diff --git a/upnp/src/api/ActionComplete.c b/upnp/src/api/ActionComplete.c index 8a7f872..63f122b 100644 --- a/upnp/src/api/ActionComplete.c +++ b/upnp/src/api/ActionComplete.c @@ -107,6 +107,11 @@ const UpnpString *UpnpActionComplete_get_CtrlUrl(const UpnpActionComplete *p) return ((struct SUpnpActionComplete *)p)->m_ctrlUrl; } +const char *UpnpActionComplete_get_CtrlUrl_cstr(const UpnpActionComplete *p) +{ + return UpnpString_get_String(UpnpActionComplete_get_CtrlUrl(p)); +} + void UpnpActionComplete_set_CtrlUrl(UpnpActionComplete *p, const UpnpString *s) { diff --git a/upnp/src/api/ActionRequest.c b/upnp/src/api/ActionRequest.c index 2026a81..b45b5e6 100644 --- a/upnp/src/api/ActionRequest.c +++ b/upnp/src/api/ActionRequest.c @@ -146,6 +146,11 @@ const UpnpString *UpnpActionRequest_get_ErrStr(const UpnpActionRequest *p) return ((struct SUpnpActionRequest *)p)->m_errStr; } +const char *UpnpActionRequest_get_ErrStr_cstr(const UpnpActionRequest *p) +{ + return UpnpString_get_String(UpnpActionRequest_get_ErrStr(p)); +} + void UpnpActionRequest_set_ErrStr(UpnpActionRequest *p, const UpnpString *s) { @@ -167,6 +172,11 @@ const UpnpString *UpnpActionRequest_get_ActionName(const UpnpActionRequest *p) return ((struct SUpnpActionRequest *)p)->m_actionName; } +const char *UpnpActionRequest_get_ActionName_cstr(const UpnpActionRequest *p) +{ + return UpnpString_get_String(UpnpActionRequest_get_ActionName(p)); +} + void UpnpActionRequest_set_ActionName(UpnpActionRequest *p, const UpnpString *s) { @@ -188,6 +198,11 @@ const UpnpString *UpnpActionRequest_get_DevUDN(const UpnpActionRequest *p) return ((struct SUpnpActionRequest *)p)->m_devUDN; } +const char *UpnpActionRequest_get_DevUDN_cstr(const UpnpActionRequest *p) +{ + return UpnpString_get_String(UpnpActionRequest_get_DevUDN(p)); +} + void UpnpActionRequest_set_DevUDN(UpnpActionRequest *p, const UpnpString *s) { @@ -201,6 +216,11 @@ const UpnpString *UpnpActionRequest_get_ServiceID(const UpnpActionRequest *p) return ((struct SUpnpActionRequest *)p)->m_serviceID; } +const char *UpnpActionRequest_get_ServiceID_cstr(const UpnpActionRequest *p) +{ + return UpnpString_get_String(UpnpActionRequest_get_ServiceID(p)); +} + void UpnpActionRequest_set_ServiceID(UpnpActionRequest *p, const UpnpString *s) { @@ -235,13 +255,13 @@ void UpnpActionRequest_set_ActionResult(UpnpActionRequest *p, IXML_Document *d) } -struct sockaddr *UpnpActionRequest_get_CtrlPtIPAddr(const UpnpActionRequest *p) +const struct sockaddr *UpnpActionRequest_get_CtrlPtIPAddr(const UpnpActionRequest *p) { return (struct sockaddr *)&((struct SUpnpActionRequest *)p)->m_ctrlPtIPAddr; } -void UpnpActionRequest_set_CtrlPtIPAddr(UpnpActionRequest *p, struct sockaddr *ia) +void UpnpActionRequest_set_CtrlPtIPAddr(UpnpActionRequest *p, const struct sockaddr *ia) { ((struct SUpnpActionRequest *)p)->m_ctrlPtIPAddr = *(struct sockaddr_storage *)ia; } diff --git a/upnp/src/api/Discovery.c b/upnp/src/api/Discovery.c index dda4c74..84d3eb8 100644 --- a/upnp/src/api/Discovery.c +++ b/upnp/src/api/Discovery.c @@ -154,6 +154,11 @@ const UpnpString *UpnpDiscovery_get_DeviceID(const UpnpDiscovery *p) return ((struct SUpnpDiscovery *)p)->m_deviceID; } +const char *UpnpDiscovery_get_DeviceID_cstr(const UpnpDiscovery *p) +{ + return UpnpString_get_String(UpnpDiscovery_get_DeviceID(p)); +} + void UpnpDiscovery_set_DeviceID(UpnpDiscovery *p, const UpnpString *s) { @@ -175,6 +180,11 @@ const UpnpString *UpnpDiscovery_get_DeviceType(const UpnpDiscovery *p) return ((struct SUpnpDiscovery *)p)->m_deviceType; } +const char *UpnpDiscovery_get_DeviceType_cstr(const UpnpDiscovery *p) +{ + return UpnpString_get_String(UpnpDiscovery_get_DeviceType(p)); +} + void UpnpDiscovery_set_DeviceType(UpnpDiscovery *p, const UpnpString *s) { @@ -196,6 +206,11 @@ const UpnpString *UpnpDiscovery_get_ServiceType(const UpnpDiscovery *p) return ((struct SUpnpDiscovery *)p)->m_serviceType; } +const char *UpnpDiscovery_get_ServiceType_cstr(const UpnpDiscovery *p) +{ + return UpnpString_get_String(UpnpDiscovery_get_ServiceType(p)); +} + void UpnpDiscovery_set_ServiceType(UpnpDiscovery *p, const UpnpString *s) { @@ -217,6 +232,11 @@ const UpnpString *UpnpDiscovery_get_ServiceVer(const UpnpDiscovery *p) return ((struct SUpnpDiscovery *)p)->m_serviceVer; } +const char *UpnpDiscovery_get_ServiceVer_cstr(const UpnpDiscovery *p) +{ + return UpnpString_get_String(UpnpDiscovery_get_ServiceVer(p)); +} + void UpnpDiscovery_set_ServiceVer(UpnpDiscovery *p, const UpnpString *s) { @@ -238,6 +258,11 @@ const UpnpString *UpnpDiscovery_get_Location(const UpnpDiscovery *p) return ((struct SUpnpDiscovery *)p)->m_location; } +const char *UpnpDiscovery_get_Location_cstr(const UpnpDiscovery *p) +{ + return UpnpString_get_String(UpnpDiscovery_get_Location(p)); +} + void UpnpDiscovery_set_Location(UpnpDiscovery *p, const UpnpString *s) { @@ -267,6 +292,11 @@ const UpnpString *UpnpDiscovery_get_Os(const UpnpDiscovery *p) return ((struct SUpnpDiscovery *)p)->m_os; } +const char *UpnpDiscovery_get_Os_cstr(const UpnpDiscovery *p) +{ + return UpnpString_get_String(UpnpDiscovery_get_Os(p)); +} + void UpnpDiscovery_set_Os(UpnpDiscovery *p, const UpnpString *s) { @@ -296,6 +326,11 @@ const UpnpString *UpnpDiscovery_get_Date(const UpnpDiscovery *p) return ((struct SUpnpDiscovery *)p)->m_date; } +const char *UpnpDiscovery_get_Date_cstr(const UpnpDiscovery *p) +{ + return UpnpString_get_String(UpnpDiscovery_get_Date(p)); +} + void UpnpDiscovery_set_Date(UpnpDiscovery *p, const UpnpString *s) { @@ -317,6 +352,11 @@ const UpnpString *UpnpDiscovery_get_Ext(const UpnpDiscovery *p) return ((struct SUpnpDiscovery *)p)->m_ext; } +const char *UpnpDiscovery_get_Ext_cstr(const UpnpDiscovery *p) +{ + return UpnpString_get_String(UpnpDiscovery_get_Ext(p)); +} + void UpnpDiscovery_set_Ext(UpnpDiscovery *p, const UpnpString *s) { @@ -341,13 +381,13 @@ void UpnpDiscovery_strncpy_Ext(UpnpDiscovery *p, const char *s, int n) } -struct sockaddr *UpnpDiscovery_get_DestAddr(const UpnpDiscovery *p) +const struct sockaddr *UpnpDiscovery_get_DestAddr(const UpnpDiscovery *p) { return (struct sockaddr *)&((struct SUpnpDiscovery *)p)->m_destAddr; } -void UpnpDiscovery_set_DestAddr(UpnpDiscovery *p, struct sockaddr *sa) +void UpnpDiscovery_set_DestAddr(UpnpDiscovery *p, const struct sockaddr *sa) { ((struct SUpnpDiscovery *)p)->m_destAddr = *(struct sockaddr_storage *)sa; } diff --git a/upnp/src/api/Event.c b/upnp/src/api/Event.c index c107abd..009edbe 100644 --- a/upnp/src/api/Event.c +++ b/upnp/src/api/Event.c @@ -100,11 +100,16 @@ void UpnpEvent_set_ChangedVariables(UpnpEvent *p, IXML_Document *d) } -UpnpString *UpnpEvent_get_SID(const UpnpEvent *p) +const UpnpString *UpnpEvent_get_SID(const UpnpEvent *p) { return ((struct SUpnpEvent *)p)->m_SID; } +const char *UpnpEvent_get_SID_cstr(const UpnpEvent *p) +{ + return UpnpString_get_String(UpnpEvent_get_SID(p)); +} + void UpnpEvent_set_SID(UpnpEvent *p, const UpnpString *s) { diff --git a/upnp/src/api/EventSubscribe.c b/upnp/src/api/EventSubscribe.c index 40134b6..6be00be 100644 --- a/upnp/src/api/EventSubscribe.c +++ b/upnp/src/api/EventSubscribe.c @@ -109,6 +109,11 @@ const UpnpString *UpnpEventSubscribe_get_SID(const UpnpEventSubscribe *p) return ((struct SEventSubscribe *)p)->m_SID; } +const char *UpnpEventSubscribe_get_SID_cstr(const UpnpEventSubscribe *p) +{ + return UpnpString_get_String(UpnpEventSubscribe_get_SID(p)); +} + void UpnpEventSubscribe_set_SID(UpnpEventSubscribe *p, const UpnpString *s) { @@ -130,6 +135,11 @@ const UpnpString *UpnpEventSubscribe_get_PublisherUrl(const UpnpEventSubscribe * return ((struct SEventSubscribe *)p)->m_publisherUrl; } +const char *UpnpEventSubscribe_get_PublisherUrl_cstr(const UpnpEventSubscribe *p) +{ + return UpnpString_get_String(UpnpEventSubscribe_get_PublisherUrl(p)); +} + void UpnpEventSubscribe_set_PublisherUrl(UpnpEventSubscribe *p, const UpnpString *s) { diff --git a/upnp/src/api/FileInfo.c b/upnp/src/api/FileInfo.c index 1119142..dc64166 100644 --- a/upnp/src/api/FileInfo.c +++ b/upnp/src/api/FileInfo.c @@ -145,6 +145,11 @@ const DOMString UpnpFileInfo_get_ContentType(const UpnpFileInfo *p) return ((struct SUpnpFileInfo *)p)->m_contentType; } +const char *UpnpFileInfo_get_ContentType_cstr(const UpnpFileInfo *p) +{ + return (const char *)UpnpFileInfo_get_ContentType(p); +} + void UpnpFileInfo_set_ContentType(UpnpFileInfo *p, const DOMString s) { @@ -158,6 +163,11 @@ const DOMString UpnpFileInfo_get_ExtraHeaders(const UpnpFileInfo *p) return ((struct SUpnpFileInfo *)p)->m_extraHeaders; } +const char *UpnpFileInfo_get_ExtraHeaders_cstr(const UpnpFileInfo *p) +{ + return (const char *)UpnpFileInfo_get_ExtraHeaders(p); +} + void UpnpFileInfo_set_ExtraHeaders(UpnpFileInfo *p, const DOMString s) { diff --git a/upnp/src/api/StateVarComplete.c b/upnp/src/api/StateVarComplete.c index cc24fa8..58c9b3a 100644 --- a/upnp/src/api/StateVarComplete.c +++ b/upnp/src/api/StateVarComplete.c @@ -102,6 +102,11 @@ const UpnpString *UpnpStateVarComplete_get_CtrlUrl(const UpnpStateVarComplete *p return ((struct SUpnpStateVarComplete *)p)->m_ctrlUrl; } +const char *UpnpStateVarComplete_get_CtrlUrl_cstr(const UpnpStateVarComplete *p) +{ + return UpnpString_get_String(UpnpStateVarComplete_get_CtrlUrl(p)); +} + void UpnpStateVarComplete_set_CtrlUrl(UpnpStateVarComplete *p, const UpnpString *s) { @@ -123,6 +128,11 @@ const UpnpString *UpnpStateVarComplete_get_StateVarName(const UpnpStateVarComple return ((struct SUpnpStateVarComplete *)p)->m_stateVarName; } +const char *UpnpStateVarComplete_get_StateVarName_cstr(const UpnpStateVarComplete *p) +{ + return UpnpString_get_String(UpnpStateVarComplete_get_StateVarName(p)); +} + void UpnpStateVarComplete_set_StateVarName(UpnpStateVarComplete *p, const UpnpString *s) { @@ -144,6 +154,11 @@ const DOMString UpnpStateVarComplete_get_CurrentVal(const UpnpStateVarComplete * return ((struct SUpnpStateVarComplete *)p)->m_currentVal; } +const char *UpnpStateVarComplete_get_CurrentVal_cstr(const UpnpStateVarComplete *p) +{ + return (const char *)UpnpStateVarComplete_get_CurrentVal(p); +} + void UpnpStateVarComplete_set_CurrentVal(UpnpStateVarComplete *p, const DOMString s) { diff --git a/upnp/src/api/StateVarRequest.c b/upnp/src/api/StateVarRequest.c index 7ef1d8f..4b79787 100644 --- a/upnp/src/api/StateVarRequest.c +++ b/upnp/src/api/StateVarRequest.c @@ -138,6 +138,11 @@ const UpnpString *UpnpStateVarRequest_get_ErrStr(const UpnpStateVarRequest *p) return ((struct SUpnpStateVarRequest *)p)->m_errStr; } +const char *UpnpStateVarRequest_get_ErrStr_cstr(const UpnpStateVarRequest *p) +{ + return UpnpString_get_String(UpnpStateVarRequest_get_ErrStr(p)); +} + void UpnpStateVarRequest_set_ErrStr(UpnpStateVarRequest *p, const UpnpString *s) { @@ -159,6 +164,11 @@ const UpnpString *UpnpStateVarRequest_get_DevUDN(const UpnpStateVarRequest *p) return ((struct SUpnpStateVarRequest *)p)->m_devUDN; } +const char *UpnpStateVarRequest_get_DevUDN_cstr(const UpnpStateVarRequest *p) +{ + return UpnpString_get_String(UpnpStateVarRequest_get_DevUDN(p)); +} + void UpnpStateVarRequest_set_DevUDN(UpnpStateVarRequest *p, const UpnpString *s) { @@ -172,6 +182,11 @@ const UpnpString *UpnpStateVarRequest_get_ServiceID(const UpnpStateVarRequest *p return ((struct SUpnpStateVarRequest *)p)->m_serviceID; } +const char *UpnpStateVarRequest_get_ServiceID_cstr(const UpnpStateVarRequest *p) +{ + return UpnpString_get_String(UpnpStateVarRequest_get_ServiceID(p)); +} + void UpnpStateVarRequest_set_ServiceID(UpnpStateVarRequest *p, const UpnpString *s) { @@ -185,6 +200,11 @@ const UpnpString *UpnpStateVarRequest_get_StateVarName(const UpnpStateVarRequest return ((struct SUpnpStateVarRequest *)p)->m_stateVarName; } +const char *UpnpStateVarRequest_get_StateVarName_cstr(const UpnpStateVarRequest *p) +{ + return UpnpString_get_String(UpnpStateVarRequest_get_StateVarName(p)); +} + void UpnpStateVarRequest_set_StateVarName(UpnpStateVarRequest *p, const UpnpString *s) { @@ -201,13 +221,13 @@ void UpnpStateVarRequest_strcpy_StateVarName(UpnpStateVarRequest *p, const char } -struct sockaddr *UpnpStateVarRequest_get_CtrlPtIPAddr(const UpnpStateVarRequest *p) +const struct sockaddr *UpnpStateVarRequest_get_CtrlPtIPAddr(const UpnpStateVarRequest *p) { return (struct sockaddr *)&((struct SUpnpStateVarRequest *)p)->m_ctrlPtIPAddr; } -void UpnpStateVarRequest_set_CtrlPtIPAddr(UpnpStateVarRequest *p, struct sockaddr *sa) +void UpnpStateVarRequest_set_CtrlPtIPAddr(UpnpStateVarRequest *p, const struct sockaddr *sa) { ((struct SUpnpStateVarRequest *)p)->m_ctrlPtIPAddr = *(struct sockaddr_storage *)sa; } @@ -218,6 +238,11 @@ const DOMString UpnpStateVarRequest_get_CurrentVal(const UpnpStateVarRequest *p) return ((struct SUpnpStateVarRequest *)p)->m_currentVal; } +const char *UpnpStateVarRequest_get_CurrentVal_cstr(const UpnpStateVarRequest *p) +{ + return (const char *)UpnpStateVarRequest_get_CurrentVal(p); +} + void UpnpStateVarRequest_set_CurrentVal(UpnpStateVarRequest *p, const DOMString s) { diff --git a/upnp/src/api/SubscriptionRequest.c b/upnp/src/api/SubscriptionRequest.c index 6a6e27f..c77cc3d 100644 --- a/upnp/src/api/SubscriptionRequest.c +++ b/upnp/src/api/SubscriptionRequest.c @@ -81,6 +81,11 @@ const UpnpString *UpnpSubscriptionRequest_get_ServiceId(const UpnpSubscriptionRe return ((struct SUpnpSubscriptionRequest *)p)->m_serviceId; } +const char *UpnpSubscriptionRequest_get_ServiceId_cstr(const UpnpSubscriptionRequest *p) +{ + return UpnpString_get_String(UpnpSubscriptionRequest_get_ServiceId(p)); +} + void UpnpSubscriptionRequest_set_ServiceId(UpnpSubscriptionRequest *p, const UpnpString *s) { @@ -102,6 +107,11 @@ const UpnpString *UpnpSubscriptionRequest_get_UDN(const UpnpSubscriptionRequest return ((struct SUpnpSubscriptionRequest *)p)->m_UDN; } +const char *UpnpSubscriptionRequest_get_UDN_cstr(const UpnpSubscriptionRequest *p) +{ + return UpnpString_get_String(UpnpSubscriptionRequest_get_UDN(p)); +} + void UpnpSubscriptionRequest_set_UDN(UpnpSubscriptionRequest *p, const UpnpString *s) { @@ -123,6 +133,11 @@ const UpnpString *UpnpSubscriptionRequest_get_SID(const UpnpSubscriptionRequest return ((struct SUpnpSubscriptionRequest *)p)->m_SID; } +const char *UpnpSubscriptionRequest_get_SID_cstr(const UpnpSubscriptionRequest *p) +{ + return UpnpString_get_String(UpnpSubscriptionRequest_get_SID(p)); +} + void UpnpSubscriptionRequest_set_SID(UpnpSubscriptionRequest *p, const UpnpString *s) { diff --git a/upnp/src/genlib/client_table/client_table.c b/upnp/src/genlib/client_table/client_table.c index 283c1de..17167b1 100644 --- a/upnp/src/genlib/client_table/client_table.c +++ b/upnp/src/genlib/client_table/client_table.c @@ -1,33 +1,33 @@ -/////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2000-2003 Intel Corporation -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// * Neither name of Intel Corporation nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -/////////////////////////////////////////////////////////////////////////// +/******************************************************************************* + * + * Copyright (c) 2000-2003 Intel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * - Neither name of Intel Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ******************************************************************************/ /************************************************************************ * Purpose: This file defines the functions for clients. It defines @@ -139,6 +139,11 @@ const UpnpString *UpnpClientSubscription_get_SID(const ClientSubscription *p) return ((struct SClientSubscription *)p)->m_SID; } +const char *UpnpClientSubscription_get_SID_cstr(const ClientSubscription *p) +{ + return UpnpString_get_String(UpnpClientSubscription_get_SID(p)); +} + void UpnpClientSubscription_set_SID(ClientSubscription *p, const UpnpString *s) { @@ -162,6 +167,12 @@ const UpnpString *UpnpClientSubscription_get_ActualSID(const ClientSubscription } +const char *UpnpClientSubscription_get_ActualSID_cstr(const ClientSubscription *p) +{ + return UpnpString_get_String(UpnpClientSubscription_get_ActualSID(p)); +} + + void UpnpClientSubscription_set_ActualSID(ClientSubscription *p, const UpnpString *s) { UpnpString_delete(((struct SClientSubscription *)p)->m_actualSID); @@ -183,6 +194,12 @@ const UpnpString *UpnpClientSubscription_get_EventURL(const ClientSubscription * } +const char *UpnpClientSubscription_get_EventURL_cstr(const ClientSubscription *p) +{ + return UpnpString_get_String(UpnpClientSubscription_get_EventURL(p)); +} + + void UpnpClientSubscription_set_EventURL(ClientSubscription *p, const UpnpString *s) { UpnpString_delete(((struct SClientSubscription *)p)->m_eventURL); @@ -251,7 +268,7 @@ void RemoveClientSubClientSID(ClientSubscription **head, const UpnpString *sid) while (finger) { found = !strcmp( UpnpString_get_String(sid), - UpnpString_get_String(UpnpClientSubscription_get_SID(finger))); + UpnpClientSubscription_get_SID_cstr(finger)); if (found) { if (previous) { UpnpClientSubscription_set_Next(previous, @@ -276,7 +293,7 @@ ClientSubscription *GetClientSubClientSID(ClientSubscription *head, const UpnpSt int found = 0; while (next) { found = !strcmp( - UpnpString_get_String(UpnpClientSubscription_get_SID(next)), + UpnpClientSubscription_get_SID_cstr(next), UpnpString_get_String(sid)); if(found) { break; @@ -294,7 +311,7 @@ ClientSubscription *GetClientSubActualSID(ClientSubscription *head, token *sid) ClientSubscription *next = head; while (next) { if (!memcmp( - UpnpString_get_String(UpnpClientSubscription_get_ActualSID(next)), + UpnpClientSubscription_get_ActualSID_cstr(next), sid->buff, sid->size)) { break; } else { diff --git a/upnp/src/soap/soap_device.c b/upnp/src/soap/soap_device.c index 2dcf6ec..9bb2da9 100644 --- a/upnp/src/soap/soap_device.c +++ b/upnp/src/soap/soap_device.c @@ -912,7 +912,7 @@ static UPNP_INLINE void handle_query_variable( err_str = Soap_Invalid_Var; } else { err_code = UpnpStateVarRequest_get_ErrCode(variable); - err_str = UpnpString_get_String(UpnpStateVarRequest_get_ErrStr(variable)); + err_str = UpnpStateVarRequest_get_ErrStr_cstr(variable); } send_error_response( info, err_code, err_str, request ); return; @@ -998,7 +998,7 @@ handle_invoke_action( IN SOCKINFO * info, err_code = UpnpActionRequest_get_ErrCode(action); if (err_code != UPNP_E_SUCCESS) { - err_str = UpnpString_get_String(UpnpActionRequest_get_ErrStr(action)); + err_str = UpnpActionRequest_get_ErrStr_cstr(action); if (strlen(err_str) <= 0) { err_code = SOAP_ACTION_FAILED; err_str = Soap_Action_Failed;