summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-06-22 18:30:13 +0000
committerBenny Prijono <bennylp@teluu.com>2006-06-22 18:30:13 +0000
commit7c987a296324d3e28dd27086600c2e51d07ae721 (patch)
treea2f56a8ab6e91f24f3469b866743ad8f2b3ed20b
parentaebddd09236b938f3d535f888cbc339b92a40817 (diff)
Added the error code into error messages
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@534 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjlib-util/src/pjlib-util/errno.c24
-rw-r--r--pjlib/include/pj/errno.h20
-rw-r--r--pjlib/src/pj/errno.c34
-rw-r--r--pjmedia/src/pjmedia/errno.c154
-rw-r--r--pjsip/src/pjsip/sip_errno.c112
5 files changed, 182 insertions, 162 deletions
diff --git a/pjlib-util/src/pjlib-util/errno.c b/pjlib-util/src/pjlib-util/errno.c
index bce785ae..f686e0be 100644
--- a/pjlib-util/src/pjlib-util/errno.c
+++ b/pjlib-util/src/pjlib-util/errno.c
@@ -33,20 +33,20 @@ static const struct
} err_str[] =
{
/* STUN errors */
- { PJLIB_UTIL_ESTUNRESOLVE, "Unable to resolve STUN server" },
- { PJLIB_UTIL_ESTUNINMSGTYPE, "Unknown STUN message type" },
- { PJLIB_UTIL_ESTUNINMSGLEN, "Invalid STUN message length" },
- { PJLIB_UTIL_ESTUNINATTRLEN, "STUN attribute length error" },
- { PJLIB_UTIL_ESTUNINATTRTYPE, "Invalid STUN attribute type" },
- { PJLIB_UTIL_ESTUNININDEX, "Invalid STUN server/socket index" },
- { PJLIB_UTIL_ESTUNNOBINDRES, "No STUN binding response in the message" },
- { PJLIB_UTIL_ESTUNRECVERRATTR, "Received STUN error attribute" },
- { PJLIB_UTIL_ESTUNNOMAP, "No STUN mapped address attribute" },
- { PJLIB_UTIL_ESTUNNOTRESPOND, "Received no response from STUN server" },
- { PJLIB_UTIL_ESTUNSYMMETRIC, "Symetric NAT detected by STUN" },
+ PJ_BUILD_ERR( PJLIB_UTIL_ESTUNRESOLVE, "Unable to resolve STUN server" ),
+ PJ_BUILD_ERR( PJLIB_UTIL_ESTUNINMSGTYPE, "Unknown STUN message type" ),
+ PJ_BUILD_ERR( PJLIB_UTIL_ESTUNINMSGLEN, "Invalid STUN message length" ),
+ PJ_BUILD_ERR( PJLIB_UTIL_ESTUNINATTRLEN, "STUN attribute length error" ),
+ PJ_BUILD_ERR( PJLIB_UTIL_ESTUNINATTRTYPE, "Invalid STUN attribute type" ),
+ PJ_BUILD_ERR( PJLIB_UTIL_ESTUNININDEX, "Invalid STUN server/socket index" ),
+ PJ_BUILD_ERR( PJLIB_UTIL_ESTUNNOBINDRES, "No STUN binding response in the message" ),
+ PJ_BUILD_ERR( PJLIB_UTIL_ESTUNRECVERRATTR, "Received STUN error attribute" ),
+ PJ_BUILD_ERR( PJLIB_UTIL_ESTUNNOMAP, "No STUN mapped address attribute" ),
+ PJ_BUILD_ERR( PJLIB_UTIL_ESTUNNOTRESPOND, "Received no response from STUN server" ),
+ PJ_BUILD_ERR( PJLIB_UTIL_ESTUNSYMMETRIC, "Symetric NAT detected by STUN" ),
/* XML errors */
- { PJLIB_UTIL_EINXML, "Invalid XML message" },
+ PJ_BUILD_ERR( PJLIB_UTIL_EINXML, "Invalid XML message" ),
};
#endif /* PJ_HAS_ERROR_STRING */
diff --git a/pjlib/include/pj/errno.h b/pjlib/include/pj/errno.h
index 8834a616..8b5906cb 100644
--- a/pjlib/include/pj/errno.h
+++ b/pjlib/include/pj/errno.h
@@ -66,7 +66,7 @@ PJ_BEGIN_DECL
/**
* Guidelines on error message length.
*/
-#define PJ_ERR_MSG_SIZE 64
+#define PJ_ERR_MSG_SIZE 80
/**
* Get the last platform error/status, folded into pj_status_t.
@@ -189,6 +189,18 @@ PJ_DECL(pj_status_t) pj_register_strerror(pj_status_t start_code,
*/
/**
+ * Use this macro to generate error message text for your error code,
+ * so that they look uniformly as the rest of the libraries.
+ *
+ * @param code The error code
+ * @param msg The error test.
+ */
+#ifndef PJ_BUILD_ERR
+# define PJ_BUILD_ERR(code,msg) { code, msg " (" #code ")" }
+#endif
+
+
+/**
* @hideinitializer
* Unknown error has been reported.
*/
@@ -268,6 +280,12 @@ PJ_DECL(pj_status_t) pj_register_strerror(pj_status_t start_code,
* End of file.
*/
#define PJ_EEOF (PJ_ERRNO_START_STATUS + 16)/* 70016 */
+/**
+ * @hideinitializer
+ * Size is too big.
+ */
+#define PJ_ETOOBIG (PJ_ERRNO_START_STATUS + 17)/* 70017 */
+
/** @} */ /* pj_errnum */
diff --git a/pjlib/src/pj/errno.c b/pjlib/src/pj/errno.c
index 086bfcd7..da06f996 100644
--- a/pjlib/src/pj/errno.c
+++ b/pjlib/src/pj/errno.c
@@ -40,28 +40,30 @@ static struct err_msg_hnd
/* PJLIB's own error codes/messages */
#if defined(PJ_HAS_ERROR_STRING) && PJ_HAS_ERROR_STRING!=0
+
static const struct
{
int code;
const char *msg;
} err_str[] =
{
- { PJ_EUNKNOWN, "Unknown Error" },
- { PJ_EPENDING, "Pending operation" },
- { PJ_ETOOMANYCONN, "Too many connecting sockets" },
- { PJ_EINVAL, "Invalid value or argument" },
- { PJ_ENAMETOOLONG, "Name too long" },
- { PJ_ENOTFOUND, "Not found" },
- { PJ_ENOMEM, "Not enough memory" },
- { PJ_EBUG, "BUG DETECTED!" },
- { PJ_ETIMEDOUT, "Operation timed out" },
- { PJ_ETOOMANY, "Too many objects of the specified type"},
- { PJ_EBUSY, "Object is busy"},
- { PJ_ENOTSUP, "Option/operation is not supported"},
- { PJ_EINVALIDOP, "Invalid operation"},
- { PJ_ECANCELLED, "Operation cancelled"},
- { PJ_EEXISTS, "Object already exists" },
- { PJ_EEOF, "End of file" },
+ PJ_BUILD_ERR(PJ_EUNKNOWN, "Unknown Error" ),
+ PJ_BUILD_ERR(PJ_EPENDING, "Pending operation" ),
+ PJ_BUILD_ERR(PJ_ETOOMANYCONN, "Too many connecting sockets" ),
+ PJ_BUILD_ERR(PJ_EINVAL, "Invalid value or argument" ),
+ PJ_BUILD_ERR(PJ_ENAMETOOLONG, "Name too long" ),
+ PJ_BUILD_ERR(PJ_ENOTFOUND, "Not found" ),
+ PJ_BUILD_ERR(PJ_ENOMEM, "Not enough memory" ),
+ PJ_BUILD_ERR(PJ_EBUG, "BUG DETECTED!" ),
+ PJ_BUILD_ERR(PJ_ETIMEDOUT, "Operation timed out" ),
+ PJ_BUILD_ERR(PJ_ETOOMANY, "Too many objects of the specified type"),
+ PJ_BUILD_ERR(PJ_EBUSY, "Object is busy"),
+ PJ_BUILD_ERR(PJ_ENOTSUP, "Option/operation is not supported"),
+ PJ_BUILD_ERR(PJ_EINVALIDOP, "Invalid operation"),
+ PJ_BUILD_ERR(PJ_ECANCELLED, "Operation cancelled"),
+ PJ_BUILD_ERR(PJ_EEXISTS, "Object already exists" ),
+ PJ_BUILD_ERR(PJ_EEOF, "End of file" ),
+ PJ_BUILD_ERR(PJ_ETOOBIG, "Size is too big"),
};
#endif /* PJ_HAS_ERROR_STRING */
diff --git a/pjmedia/src/pjmedia/errno.c b/pjmedia/src/pjmedia/errno.c
index f7c5082e..4016fecb 100644
--- a/pjmedia/src/pjmedia/errno.c
+++ b/pjmedia/src/pjmedia/errno.c
@@ -37,101 +37,101 @@ static const struct
} err_str[] =
{
/* Generic PJMEDIA errors, shouldn't be used! */
- { PJMEDIA_ERROR, "Unspecified PJMEDIA error" },
+ PJ_BUILD_ERR( PJMEDIA_ERROR, "Unspecified PJMEDIA error" ),
/* SDP error. */
- { PJMEDIA_SDP_EINSDP, "Invalid SDP descriptor" },
- { PJMEDIA_SDP_EINVER, "Invalid SDP version line" },
- { PJMEDIA_SDP_EINORIGIN, "Invalid SDP origin line" },
- { PJMEDIA_SDP_EINTIME, "Invalid SDP time line"},
- { PJMEDIA_SDP_EINNAME, "SDP name/subject line is empty"},
- { PJMEDIA_SDP_EINCONN, "Invalid SDP connection line"},
- { PJMEDIA_SDP_EMISSINGCONN, "Missing SDP connection info line"},
- { PJMEDIA_SDP_EINATTR, "Invalid SDP attributes"},
- { PJMEDIA_SDP_EINRTPMAP, "Invalid SDP rtpmap attribute"},
- { PJMEDIA_SDP_ERTPMAPTOOLONG, "SDP rtpmap attribute too long"},
- { PJMEDIA_SDP_EMISSINGRTPMAP, "Missing SDP rtpmap for dynamic payload type"},
- { PJMEDIA_SDP_EINMEDIA, "Invalid SDP media line" },
- { PJMEDIA_SDP_ENOFMT, "No SDP payload format in the media line" },
- { PJMEDIA_SDP_EINPT, "Invalid SDP payload type in media line" },
- { PJMEDIA_SDP_EINFMTP, "Invalid SDP fmtp attribute" },
+ PJ_BUILD_ERR( PJMEDIA_SDP_EINSDP, "Invalid SDP descriptor" ),
+ PJ_BUILD_ERR( PJMEDIA_SDP_EINVER, "Invalid SDP version line" ),
+ PJ_BUILD_ERR( PJMEDIA_SDP_EINORIGIN, "Invalid SDP origin line" ),
+ PJ_BUILD_ERR( PJMEDIA_SDP_EINTIME, "Invalid SDP time line"),
+ PJ_BUILD_ERR( PJMEDIA_SDP_EINNAME, "SDP name/subject line is empty"),
+ PJ_BUILD_ERR( PJMEDIA_SDP_EINCONN, "Invalid SDP connection line"),
+ PJ_BUILD_ERR( PJMEDIA_SDP_EMISSINGCONN, "Missing SDP connection info line"),
+ PJ_BUILD_ERR( PJMEDIA_SDP_EINATTR, "Invalid SDP attributes"),
+ PJ_BUILD_ERR( PJMEDIA_SDP_EINRTPMAP, "Invalid SDP rtpmap attribute"),
+ PJ_BUILD_ERR( PJMEDIA_SDP_ERTPMAPTOOLONG,"SDP rtpmap attribute too long"),
+ PJ_BUILD_ERR( PJMEDIA_SDP_EMISSINGRTPMAP,"Missing SDP rtpmap for dynamic payload type"),
+ PJ_BUILD_ERR( PJMEDIA_SDP_EINMEDIA, "Invalid SDP media line" ),
+ PJ_BUILD_ERR( PJMEDIA_SDP_ENOFMT, "No SDP payload format in the media line" ),
+ PJ_BUILD_ERR( PJMEDIA_SDP_EINPT, "Invalid SDP payload type in media line" ),
+ PJ_BUILD_ERR( PJMEDIA_SDP_EINFMTP, "Invalid SDP fmtp attribute" ),
/* SDP negotiator errors. */
- { PJMEDIA_SDPNEG_EINSTATE, "Invalid SDP negotiator state for operation" },
- { PJMEDIA_SDPNEG_ENOINITIAL, "No initial local SDP in SDP negotiator" },
- { PJMEDIA_SDPNEG_ENOACTIVE, "No active SDP in SDP negotiator" },
- { PJMEDIA_SDPNEG_ENONEG, "No current local/remote offer/answer" },
- { PJMEDIA_SDPNEG_EMISMEDIA, "SDP media count mismatch in offer/answer" },
- { PJMEDIA_SDPNEG_EINVANSMEDIA, "SDP media type mismatch in offer/answer" },
- { PJMEDIA_SDPNEG_EINVANSTP, "SDP media transport type mismatch in offer/answer" },
- { PJMEDIA_SDPNEG_EANSNOMEDIA, "No common SDP media payload in answer" },
- { PJMEDIA_SDPNEG_ENOMEDIA, "No active media stream after negotiation" },
+ PJ_BUILD_ERR( PJMEDIA_SDPNEG_EINSTATE, "Invalid SDP negotiator state for operation" ),
+ PJ_BUILD_ERR( PJMEDIA_SDPNEG_ENOINITIAL, "No initial local SDP in SDP negotiator" ),
+ PJ_BUILD_ERR( PJMEDIA_SDPNEG_ENOACTIVE, "No active SDP in SDP negotiator" ),
+ PJ_BUILD_ERR( PJMEDIA_SDPNEG_ENONEG, "No current local/remote offer/answer" ),
+ PJ_BUILD_ERR( PJMEDIA_SDPNEG_EMISMEDIA, "SDP media count mismatch in offer/answer" ),
+ PJ_BUILD_ERR( PJMEDIA_SDPNEG_EINVANSMEDIA, "SDP media type mismatch in offer/answer" ),
+ PJ_BUILD_ERR( PJMEDIA_SDPNEG_EINVANSTP, "SDP media transport type mismatch in offer/answer" ),
+ PJ_BUILD_ERR( PJMEDIA_SDPNEG_EANSNOMEDIA, "No common SDP media payload in answer" ),
+ PJ_BUILD_ERR( PJMEDIA_SDPNEG_ENOMEDIA, "No active media stream after negotiation" ),
/* SDP comparison results */
- { PJMEDIA_SDP_EMEDIANOTEQUAL, "SDP media descriptor not equal" },
- { PJMEDIA_SDP_EPORTNOTEQUAL, "Port in SDP media descriptor not equal" },
- { PJMEDIA_SDP_ETPORTNOTEQUAL, "Transport in SDP media descriptor not equal" },
- { PJMEDIA_SDP_EFORMATNOTEQUAL, "Format in SDP media descriptor not equal" },
- { PJMEDIA_SDP_ECONNNOTEQUAL, "SDP connection line not equal" },
- { PJMEDIA_SDP_EATTRNOTEQUAL, "SDP attributes not equal" },
- { PJMEDIA_SDP_EDIRNOTEQUAL, "SDP media direction not equal" },
- { PJMEDIA_SDP_EFMTPNOTEQUAL, "SDP fmtp attribute not equal" },
- { PJMEDIA_SDP_ERTPMAPNOTEQUAL, "SDP rtpmap attribute not equal" },
- { PJMEDIA_SDP_ESESSNOTEQUAL, "SDP session descriptor not equal" },
- { PJMEDIA_SDP_EORIGINNOTEQUAL, "SDP origin line not equal" },
- { PJMEDIA_SDP_ENAMENOTEQUAL, "SDP name/subject line not equal" },
- { PJMEDIA_SDP_ETIMENOTEQUAL, "SDP time line not equal" },
+ PJ_BUILD_ERR( PJMEDIA_SDP_EMEDIANOTEQUAL, "SDP media descriptor not equal" ),
+ PJ_BUILD_ERR( PJMEDIA_SDP_EPORTNOTEQUAL, "Port in SDP media descriptor not equal" ),
+ PJ_BUILD_ERR( PJMEDIA_SDP_ETPORTNOTEQUAL, "Transport in SDP media descriptor not equal" ),
+ PJ_BUILD_ERR( PJMEDIA_SDP_EFORMATNOTEQUAL, "Format in SDP media descriptor not equal" ),
+ PJ_BUILD_ERR( PJMEDIA_SDP_ECONNNOTEQUAL, "SDP connection line not equal" ),
+ PJ_BUILD_ERR( PJMEDIA_SDP_EATTRNOTEQUAL, "SDP attributes not equal" ),
+ PJ_BUILD_ERR( PJMEDIA_SDP_EDIRNOTEQUAL, "SDP media direction not equal" ),
+ PJ_BUILD_ERR( PJMEDIA_SDP_EFMTPNOTEQUAL, "SDP fmtp attribute not equal" ),
+ PJ_BUILD_ERR( PJMEDIA_SDP_ERTPMAPNOTEQUAL, "SDP rtpmap attribute not equal" ),
+ PJ_BUILD_ERR( PJMEDIA_SDP_ESESSNOTEQUAL, "SDP session descriptor not equal" ),
+ PJ_BUILD_ERR( PJMEDIA_SDP_EORIGINNOTEQUAL, "SDP origin line not equal" ),
+ PJ_BUILD_ERR( PJMEDIA_SDP_ENAMENOTEQUAL, "SDP name/subject line not equal" ),
+ PJ_BUILD_ERR( PJMEDIA_SDP_ETIMENOTEQUAL, "SDP time line not equal" ),
/* Codec errors. */
- { PJMEDIA_CODEC_EUNSUP, "Unsupported media codec" },
- { PJMEDIA_CODEC_EFAILED, "Codec internal creation error" },
- { PJMEDIA_CODEC_EFRMTOOSHORT, "Codec frame is too short" },
- { PJMEDIA_CODEC_EPCMTOOSHORT, "PCM frame is too short" },
- { PJMEDIA_CODEC_EFRMINLEN, "Invalid codec frame length" },
+ PJ_BUILD_ERR( PJMEDIA_CODEC_EUNSUP, "Unsupported media codec" ),
+ PJ_BUILD_ERR( PJMEDIA_CODEC_EFAILED, "Codec internal creation error" ),
+ PJ_BUILD_ERR( PJMEDIA_CODEC_EFRMTOOSHORT, "Codec frame is too short" ),
+ PJ_BUILD_ERR( PJMEDIA_CODEC_EPCMTOOSHORT, "PCM frame is too short" ),
+ PJ_BUILD_ERR( PJMEDIA_CODEC_EFRMINLEN, "Invalid codec frame length" ),
/* Media errors. */
- { PJMEDIA_EINVALIDIP, "Invalid remote media (IP) address" },
- { PJMEDIA_EASYMCODEC, "Asymetric media codec is not supported" },
- { PJMEDIA_EINVALIDPT, "Invalid media payload type" },
- { PJMEDIA_EMISSINGRTPMAP, "Missing rtpmap in media description" },
- { PJMEDIA_EINVALIMEDIATYPE, "Invalid media type" },
- { PJMEDIA_EREMOTENODTMF, "Remote does not support DTMF" },
- { PJMEDIA_RTP_EINDTMF, "Invalid DTMF digit" },
- { PJMEDIA_RTP_EREMNORFC2833, "Remote does not support RFC 2833" },
+ PJ_BUILD_ERR( PJMEDIA_EINVALIDIP, "Invalid remote media (IP) address" ),
+ PJ_BUILD_ERR( PJMEDIA_EASYMCODEC, "Asymetric media codec is not supported" ),
+ PJ_BUILD_ERR( PJMEDIA_EINVALIDPT, "Invalid media payload type" ),
+ PJ_BUILD_ERR( PJMEDIA_EMISSINGRTPMAP, "Missing rtpmap in media description" ),
+ PJ_BUILD_ERR( PJMEDIA_EINVALIMEDIATYPE, "Invalid media type" ),
+ PJ_BUILD_ERR( PJMEDIA_EREMOTENODTMF, "Remote does not support DTMF" ),
+ PJ_BUILD_ERR( PJMEDIA_RTP_EINDTMF, "Invalid DTMF digit" ),
+ PJ_BUILD_ERR( PJMEDIA_RTP_EREMNORFC2833,"Remote does not support RFC 2833" ),
/* RTP session errors. */
- { PJMEDIA_RTP_EINPKT, "Invalid RTP packet" },
- { PJMEDIA_RTP_EINPACK, "Invalid RTP packing (internal error)" },
- { PJMEDIA_RTP_EINVER, "Invalid RTP version" },
- { PJMEDIA_RTP_EINSSRC, "RTP packet SSRC id mismatch" },
- { PJMEDIA_RTP_EINPT, "RTP packet payload type mismatch" },
- { PJMEDIA_RTP_EINLEN, "Invalid RTP packet length" },
- { PJMEDIA_RTP_ESESSRESTART, "RTP session restarted" },
- { PJMEDIA_RTP_ESESSPROBATION, "RTP session in probation" },
- { PJMEDIA_RTP_EBADSEQ, "Bad sequence number in RTP packet" },
- { PJMEDIA_RTP_EBADDEST, "RTP media port destination is not configured" },
- { PJMEDIA_RTP_ENOCONFIG, "RTP is not configured" },
+ PJ_BUILD_ERR( PJMEDIA_RTP_EINPKT, "Invalid RTP packet" ),
+ PJ_BUILD_ERR( PJMEDIA_RTP_EINPACK, "Invalid RTP packing (internal error)" ),
+ PJ_BUILD_ERR( PJMEDIA_RTP_EINVER, "Invalid RTP version" ),
+ PJ_BUILD_ERR( PJMEDIA_RTP_EINSSRC, "RTP packet SSRC id mismatch" ),
+ PJ_BUILD_ERR( PJMEDIA_RTP_EINPT, "RTP packet payload type mismatch" ),
+ PJ_BUILD_ERR( PJMEDIA_RTP_EINLEN, "Invalid RTP packet length" ),
+ PJ_BUILD_ERR( PJMEDIA_RTP_ESESSRESTART, "RTP session restarted" ),
+ PJ_BUILD_ERR( PJMEDIA_RTP_ESESSPROBATION, "RTP session in probation" ),
+ PJ_BUILD_ERR( PJMEDIA_RTP_EBADSEQ, "Bad sequence number in RTP packet" ),
+ PJ_BUILD_ERR( PJMEDIA_RTP_EBADDEST, "RTP media port destination is not configured" ),
+ PJ_BUILD_ERR( PJMEDIA_RTP_ENOCONFIG, "RTP is not configured" ),
/* Media port errors: */
- { PJMEDIA_ENOTCOMPATIBLE, "Media ports are not compatible" },
- { PJMEDIA_ENCCLOCKRATE, "Media ports have incompatible clock rate" },
- { PJMEDIA_ENCSAMPLESPFRAME, "Media ports have incompatible samples per frame" },
- { PJMEDIA_ENCTYPE, "Media ports have incompatible media type" },
- { PJMEDIA_ENCBITS, "Media ports have incompatible bits per sample" },
- { PJMEDIA_ENCBYTES, "Media ports have incompatible bytes per frame" },
- { PJMEDIA_ENCCHANNEL, "Media ports have incompatible number of channels" },
+ PJ_BUILD_ERR( PJMEDIA_ENOTCOMPATIBLE, "Media ports are not compatible" ),
+ PJ_BUILD_ERR( PJMEDIA_ENCCLOCKRATE, "Media ports have incompatible clock rate" ),
+ PJ_BUILD_ERR( PJMEDIA_ENCSAMPLESPFRAME, "Media ports have incompatible samples per frame" ),
+ PJ_BUILD_ERR( PJMEDIA_ENCTYPE, "Media ports have incompatible media type" ),
+ PJ_BUILD_ERR( PJMEDIA_ENCBITS, "Media ports have incompatible bits per sample" ),
+ PJ_BUILD_ERR( PJMEDIA_ENCBYTES, "Media ports have incompatible bytes per frame" ),
+ PJ_BUILD_ERR( PJMEDIA_ENCCHANNEL, "Media ports have incompatible number of channels" ),
/* Media file errors: */
- { PJMEDIA_ENOTVALIDWAVE, "Not a valid WAVE file" },
- { PJMEDIA_EWAVEUNSUPP, "Unsupported WAVE file format" },
- { PJMEDIA_EWAVETOOSHORT, "WAVE file too short" },
- { PJMEDIA_EFRMFILETOOBIG, "Sound frame too large for file buffer"},
+ PJ_BUILD_ERR( PJMEDIA_ENOTVALIDWAVE, "Not a valid WAVE file" ),
+ PJ_BUILD_ERR( PJMEDIA_EWAVEUNSUPP, "Unsupported WAVE file format" ),
+ PJ_BUILD_ERR( PJMEDIA_EWAVETOOSHORT, "WAVE file too short" ),
+ PJ_BUILD_ERR( PJMEDIA_EFRMFILETOOBIG, "Sound frame too large for file buffer"),
/* Sound device errors: */
- { PJMEDIA_ENOSNDREC, "No suitable sound capture device" },
- { PJMEDIA_ENOSNDPLAY, "No suitable sound playback device" },
- { PJMEDIA_ESNDINDEVID, "Invalid sound device ID" },
- { PJMEDIA_ESNDINSAMPLEFMT, "Invalid sample format for sound device" },
+ PJ_BUILD_ERR( PJMEDIA_ENOSNDREC, "No suitable sound capture device" ),
+ PJ_BUILD_ERR( PJMEDIA_ENOSNDPLAY, "No suitable sound playback device" ),
+ PJ_BUILD_ERR( PJMEDIA_ESNDINDEVID, "Invalid sound device ID" ),
+ PJ_BUILD_ERR( PJMEDIA_ESNDINSAMPLEFMT, "Invalid sample format for sound device" ),
};
#endif /* PJ_HAS_ERROR_STRING */
diff --git a/pjsip/src/pjsip/sip_errno.c b/pjsip/src/pjsip/sip_errno.c
index c9b74acf..c32481c8 100644
--- a/pjsip/src/pjsip/sip_errno.c
+++ b/pjsip/src/pjsip/sip_errno.c
@@ -34,80 +34,80 @@ static const struct
} err_str[] =
{
/* Generic SIP errors */
- { PJSIP_EBUSY, "Object is busy" },
- { PJSIP_ETYPEEXISTS , "Object with the same type exists" },
- { PJSIP_ESHUTDOWN, "SIP stack shutting down" },
- { PJSIP_ENOTINITIALIZED, "SIP object is not initialized." },
+ PJ_BUILD_ERR( PJSIP_EBUSY, "Object is busy" ),
+ PJ_BUILD_ERR( PJSIP_ETYPEEXISTS , "Object with the same type exists" ),
+ PJ_BUILD_ERR( PJSIP_ESHUTDOWN, "SIP stack shutting down" ),
+ PJ_BUILD_ERR( PJSIP_ENOTINITIALIZED,"SIP object is not initialized." ),
/* Messaging errors */
- { PJSIP_EINVALIDMSG, "Invalid message/syntax error" },
- { PJSIP_ENOTREQUESTMSG, "Expecting request message"},
- { PJSIP_ENOTRESPONSEMSG, "Expecting response message"},
- { PJSIP_EMSGTOOLONG, "Message too long" },
- { PJSIP_EPARTIALMSG, "Partial message" },
+ PJ_BUILD_ERR( PJSIP_EINVALIDMSG, "Invalid message/syntax error" ),
+ PJ_BUILD_ERR( PJSIP_ENOTREQUESTMSG, "Expecting request message"),
+ PJ_BUILD_ERR( PJSIP_ENOTRESPONSEMSG,"Expecting response message"),
+ PJ_BUILD_ERR( PJSIP_EMSGTOOLONG, "Message too long" ),
+ PJ_BUILD_ERR( PJSIP_EPARTIALMSG, "Partial message" ),
- { PJSIP_EINVALIDSTATUS, "Invalid/unexpected SIP status code"},
+ PJ_BUILD_ERR( PJSIP_EINVALIDSTATUS, "Invalid/unexpected SIP status code"),
- { PJSIP_EINVALIDURI, "Invalid URI" },
- { PJSIP_EINVALIDSCHEME, "Invalid URI scheme" },
- { PJSIP_EMISSINGREQURI, "Missing Request-URI" },
- { PJSIP_EINVALIDREQURI, "Invalid Request URI" },
- { PJSIP_EURITOOLONG, "URI is too long" },
+ PJ_BUILD_ERR( PJSIP_EINVALIDURI, "Invalid URI" ),
+ PJ_BUILD_ERR( PJSIP_EINVALIDSCHEME, "Invalid URI scheme" ),
+ PJ_BUILD_ERR( PJSIP_EMISSINGREQURI, "Missing Request-URI" ),
+ PJ_BUILD_ERR( PJSIP_EINVALIDREQURI, "Invalid Request URI" ),
+ PJ_BUILD_ERR( PJSIP_EURITOOLONG, "URI is too long" ),
- { PJSIP_EMISSINGHDR, "Missing required header(s)" },
- { PJSIP_EINVALIDHDR, "Invalid header field"},
- { PJSIP_EINVALIDVIA, "Invalid Via header" },
- { PJSIP_EMULTIPLEVIA, "Multiple Via headers in response" },
+ PJ_BUILD_ERR( PJSIP_EMISSINGHDR, "Missing required header(s)" ),
+ PJ_BUILD_ERR( PJSIP_EINVALIDHDR, "Invalid header field"),
+ PJ_BUILD_ERR( PJSIP_EINVALIDVIA, "Invalid Via header" ),
+ PJ_BUILD_ERR( PJSIP_EMULTIPLEVIA, "Multiple Via headers in response" ),
- { PJSIP_EMISSINGBODY, "Missing message body" },
- { PJSIP_EINVALIDMETHOD, "Invalid/unexpected method" },
+ PJ_BUILD_ERR( PJSIP_EMISSINGBODY, "Missing message body" ),
+ PJ_BUILD_ERR( PJSIP_EINVALIDMETHOD, "Invalid/unexpected method" ),
/* Transport errors */
- { PJSIP_EUNSUPTRANSPORT, "Unsupported transport"},
- { PJSIP_EPENDINGTX, "Transmit buffer already pending"},
- { PJSIP_ERXOVERFLOW, "Rx buffer overflow"},
- { PJSIP_EBUFDESTROYED, "Buffer destroyed"},
+ PJ_BUILD_ERR( PJSIP_EUNSUPTRANSPORT,"Unsupported transport"),
+ PJ_BUILD_ERR( PJSIP_EPENDINGTX, "Transmit buffer already pending"),
+ PJ_BUILD_ERR( PJSIP_ERXOVERFLOW, "Rx buffer overflow"),
+ PJ_BUILD_ERR( PJSIP_EBUFDESTROYED, "Buffer destroyed"),
/* Transaction errors */
- { PJSIP_ETSXDESTROYED, "Transaction has been destroyed"},
- { PJSIP_ENOTSX, "No transaction is associated with the object "
- "(expecting stateful processing)" },
+ PJ_BUILD_ERR( PJSIP_ETSXDESTROYED, "Transaction has been destroyed"),
+ PJ_BUILD_ERR( PJSIP_ENOTSX, "No transaction is associated with the object "
+ "(expecting stateful processing)" ),
/* URI comparison status */
- { PJSIP_ECMPSCHEME, "URI scheme mismatch" },
- { PJSIP_ECMPUSER, "URI user part mismatch" },
- { PJSIP_ECMPPASSWD, "URI password part mismatch" },
- { PJSIP_ECMPHOST, "URI host part mismatch" },
- { PJSIP_ECMPPORT, "URI port mismatch" },
- { PJSIP_ECMPTRANSPORTPRM, "URI transport param mismatch" },
- { PJSIP_ECMPTTLPARAM, "URI ttl param mismatch" },
- { PJSIP_ECMPUSERPARAM, "URI user param mismatch" },
- { PJSIP_ECMPMETHODPARAM, "URI method param mismatch" },
- { PJSIP_ECMPMADDRPARAM, "URI maddr param mismatch" },
- { PJSIP_ECMPOTHERPARAM, "URI other param mismatch" },
- { PJSIP_ECMPHEADERPARAM, "URI header parameter mismatch" },
+ PJ_BUILD_ERR( PJSIP_ECMPSCHEME, "URI scheme mismatch" ),
+ PJ_BUILD_ERR( PJSIP_ECMPUSER, "URI user part mismatch" ),
+ PJ_BUILD_ERR( PJSIP_ECMPPASSWD, "URI password part mismatch" ),
+ PJ_BUILD_ERR( PJSIP_ECMPHOST, "URI host part mismatch" ),
+ PJ_BUILD_ERR( PJSIP_ECMPPORT, "URI port mismatch" ),
+ PJ_BUILD_ERR( PJSIP_ECMPTRANSPORTPRM,"URI transport param mismatch" ),
+ PJ_BUILD_ERR( PJSIP_ECMPTTLPARAM, "URI ttl param mismatch" ),
+ PJ_BUILD_ERR( PJSIP_ECMPUSERPARAM, "URI user param mismatch" ),
+ PJ_BUILD_ERR( PJSIP_ECMPMETHODPARAM,"URI method param mismatch" ),
+ PJ_BUILD_ERR( PJSIP_ECMPMADDRPARAM, "URI maddr param mismatch" ),
+ PJ_BUILD_ERR( PJSIP_ECMPOTHERPARAM, "URI other param mismatch" ),
+ PJ_BUILD_ERR( PJSIP_ECMPHEADERPARAM,"URI header parameter mismatch" ),
/* Authentication. */
- { PJSIP_EFAILEDCREDENTIAL, "Credential failed to authenticate"},
- { PJSIP_ENOCREDENTIAL, "No suitable credential"},
- { PJSIP_EINVALIDALGORITHM, "Invalid/unsupported digest algorithm" },
- { PJSIP_EINVALIDQOP, "Invalid/unsupported digest qop" },
- { PJSIP_EINVALIDAUTHSCHEME, "Unsupported authentication scheme" },
- { PJSIP_EAUTHNOPREVCHAL, "No previous challenge" },
- { PJSIP_EAUTHNOAUTH, "No suitable authorization header" },
- { PJSIP_EAUTHACCNOTFOUND, "Account or credential not found" },
- { PJSIP_EAUTHACCDISABLED, "Account or credential is disabled" },
- { PJSIP_EAUTHINVALIDREALM, "Invalid authorization realm"},
- { PJSIP_EAUTHINVALIDDIGEST, "Invalid authorization digest" },
+ PJ_BUILD_ERR( PJSIP_EFAILEDCREDENTIAL, "Credential failed to authenticate"),
+ PJ_BUILD_ERR( PJSIP_ENOCREDENTIAL, "No suitable credential"),
+ PJ_BUILD_ERR( PJSIP_EINVALIDALGORITHM, "Invalid/unsupported digest algorithm" ),
+ PJ_BUILD_ERR( PJSIP_EINVALIDQOP, "Invalid/unsupported digest qop" ),
+ PJ_BUILD_ERR( PJSIP_EINVALIDAUTHSCHEME,"Unsupported authentication scheme" ),
+ PJ_BUILD_ERR( PJSIP_EAUTHNOPREVCHAL, "No previous challenge" ),
+ PJ_BUILD_ERR( PJSIP_EAUTHNOAUTH, "No suitable authorization header" ),
+ PJ_BUILD_ERR( PJSIP_EAUTHACCNOTFOUND, "Account or credential not found" ),
+ PJ_BUILD_ERR( PJSIP_EAUTHACCDISABLED, "Account or credential is disabled" ),
+ PJ_BUILD_ERR( PJSIP_EAUTHINVALIDREALM, "Invalid authorization realm"),
+ PJ_BUILD_ERR( PJSIP_EAUTHINVALIDDIGEST,"Invalid authorization digest" ),
/* UA/dialog layer. */
- { PJSIP_EMISSINGTAG, "Missing From/To tag parameter" },
- { PJSIP_ENOTREFER, "Expecting REFER request"} ,
- { PJSIP_ENOREFERSESSION, "Not associated with REFER subscription"},
+ PJ_BUILD_ERR( PJSIP_EMISSINGTAG, "Missing From/To tag parameter" ),
+ PJ_BUILD_ERR( PJSIP_ENOTREFER, "Expecting REFER request") ,
+ PJ_BUILD_ERR( PJSIP_ENOREFERSESSION,"Not associated with REFER subscription"),
/* Invite session. */
- { PJSIP_ESESSIONTERMINATED, "INVITE session already terminated" },
- { PJSIP_ESESSIONSTATE, "Invalid INVITE session state" },
+ PJ_BUILD_ERR( PJSIP_ESESSIONTERMINATED, "INVITE session already terminated" ),
+ PJ_BUILD_ERR( PJSIP_ESESSIONSTATE, "Invalid INVITE session state" ),
};