diff --git a/addons/ooh323c/src/decode.c b/addons/ooh323c/src/decode.c
index 643901e7d7fbe0f0ab45623c96ebe30db9431c2b..3d7fc04c8925f740c9ff5ca66907b912ac5a18ef 100644
--- a/addons/ooh323c/src/decode.c
+++ b/addons/ooh323c/src/decode.c
@@ -425,7 +425,7 @@ int decodeDynBitString (OOCTXT* pctxt, ASN1DynBitStr* pBitStr)
    if (pctxt->flags & ASN1FASTCOPY) {
       /* check is it possible to do optimized decoding */
 
-      ASN1OCTET bit;
+      ASN1OCTET bit = 0;
       ASN1UINT byteIndex = pctxt->buffer.byteIndex;  /* save byte index */
       ASN1USINT bitOffset = pctxt->buffer.bitOffset; /* save bit offset */
 
@@ -499,7 +499,7 @@ int decodeDynOctetString (OOCTXT* pctxt, ASN1DynOctStr* pOctStr)
    if (pctxt->flags & ASN1FASTCOPY) {
       /* check if it is possible to do optimized decoding */
 
-      ASN1OCTET bit;
+      ASN1OCTET bit = 0;
       ASN1UINT byteIndex = pctxt->buffer.byteIndex;  /* save byte index */
       ASN1USINT bitOffset = pctxt->buffer.bitOffset; /* save bit offset */
 
diff --git a/addons/ooh323c/src/ooCapability.c b/addons/ooh323c/src/ooCapability.c
index 18a25f3751db98d1604ad306f37bff3d01332e55..08607f3ed582c972f074d076e935521237846a69 100644
--- a/addons/ooh323c/src/ooCapability.c
+++ b/addons/ooh323c/src/ooCapability.c
@@ -1104,14 +1104,14 @@ struct H245AudioCapability* ooCapabilityCreateNonStandardCapability
    (ooH323EpCapability *epCap, OOCTXT* pctxt, int dir)
 {
    H245AudioCapability *pAudio=NULL;
-   OOCapParams *params;
+
    if(!epCap || !epCap->params)
    {
      OOTRACEERR1("Error:Invalid capability parameters to "
                  "ooCapabilityCreateSimpleCapability.\n");
      return NULL;
    }
-   params =(OOCapParams*)epCap->params;
+
    pAudio = (H245AudioCapability*)memAlloc(pctxt, 
                                                 sizeof(H245AudioCapability));
    if(!pAudio)
@@ -1228,15 +1228,15 @@ struct H245DataApplicationCapability* ooCapabilityCreateT38Capability
    (ooH323EpCapability *epCap, OOCTXT* pctxt, int dir)
 {
    H245DataApplicationCapability *pT38=NULL;
-   OOCapParams *params;
    H245DataMode_application *pT38app;
+
    if(!epCap || !epCap->params)
    {
      OOTRACEERR1("Error:Invalid capability parameters to "
                  "ooCapabilityCreateSimpleCapability.\n");
      return NULL;
    }
-   params =(OOCapParams*)epCap->params;
+
    pT38 = (H245DataApplicationCapability*)memAlloc(pctxt, 
                                                 sizeof(H245DataApplicationCapability));
    if(!pT38)
diff --git a/addons/ooh323c/src/ooSocket.c b/addons/ooh323c/src/ooSocket.c
index 9349700da54af4fc31e3041a7433b8d7d7df1f9d..ee02f5206ad9d55aa1b4a55af5d600e929a31a98 100644
--- a/addons/ooh323c/src/ooSocket.c
+++ b/addons/ooh323c/src/ooSocket.c
@@ -249,7 +249,6 @@ int ooSocketCreate (OOSOCKET* psocket, int family)
 int ooSocketCreateUDP (OOSOCKET* psocket, int family) 
 {
    int on;
-   struct linger linger;
    OOSOCKET sock;
 
    if (family == 6)
@@ -273,9 +272,11 @@ int ooSocketCreateUDP (OOSOCKET* psocket, int family)
       OOTRACEERR1("Error:Failed to set socket option SO_REUSEADDR\n");
       return ASN_E_INVSOCKET;
    }
+   // may be will use later
+   /*
    linger.l_onoff = 1;
    linger.l_linger = 0;
-   /*if (setsockopt (sock, SOL_SOCKET, SO_LINGER, 
+   if (setsockopt (sock, SOL_SOCKET, SO_LINGER, 
                  (const char* ) &linger, sizeof (linger)) == -1)
       return ASN_E_INVSOCKET;
    */
diff --git a/addons/ooh323c/src/ooTimer.c b/addons/ooh323c/src/ooTimer.c
index ad5f37f0aa6bc0de6a598b2ea1cfd01ab5e577f8..56d76f3af99c4ac0c2a5cc57996203bdd3c62226 100644
--- a/addons/ooh323c/src/ooTimer.c
+++ b/addons/ooh323c/src/ooTimer.c
@@ -101,7 +101,6 @@ OOBOOL ooTimerExpired (OOTimer* pTimer)
 void ooTimerFireExpired (OOCTXT* pctxt, DList *pList)
 {
    OOTimer* pTimer;
-   int stat;
 
    while (pList->count > 0) {
       pTimer = (OOTimer*) pList->head->data;
@@ -113,8 +112,6 @@ void ooTimerFireExpired (OOCTXT* pctxt, DList *pList)
           */
          if (pTimer->reRegister) ooTimerReset (pctxt, pList, pTimer);
 
-         stat = (*pTimer->timeoutCB)(pTimer->cbData);
-
          if (!pTimer->reRegister) {
             ooTimerDelete (pctxt, pList, pTimer);
          }
diff --git a/addons/ooh323c/src/ooq931.c b/addons/ooh323c/src/ooq931.c
index fb9526915d24cffa9509547eb7326cc645ab0dee..d4cfb6544835eb8cee6ea60f690fd0f41ba4a38c 100644
--- a/addons/ooh323c/src/ooq931.c
+++ b/addons/ooh323c/src/ooq931.c
@@ -2239,7 +2239,7 @@ int ooH323HandleCallFwdRequest(OOH323CallData *call)
    ooAliases *pNewAlias=NULL, *alias=NULL;
    struct timespec ts;
    struct timeval tv;
-   int i=0, irand=0, ret = OO_OK;
+   int i=0, irand=0;
    /* Note: We keep same callToken, for new call which is going
       to replace an existing call, thus treating it as a single call.*/
 
@@ -2291,7 +2291,7 @@ int ooH323HandleCallFwdRequest(OOH323CallData *call)
    {
      /* No need to check registration status here as it is already checked for
         MakeCall command */
-      ret = ooGkClientSendAdmissionRequest(gH323ep.gkClient, fwdedCall, FALSE);
+      ooGkClientSendAdmissionRequest(gH323ep.gkClient, fwdedCall, FALSE);
       fwdedCall->callState = OO_CALL_WAITING_ADMISSION;
       ast_mutex_lock(&fwdedCall->Lock);
 	  tv = ast_tvnow();
@@ -2305,7 +2305,7 @@ int ooH323HandleCallFwdRequest(OOH323CallData *call)
    }
    if (fwdedCall->callState < OO_CALL_CLEAR) {
       ast_mutex_lock(&fwdedCall->Lock);
-      ret = ooH323CallAdmitted (fwdedCall);
+      ooH323CallAdmitted (fwdedCall);
       ast_mutex_unlock(&fwdedCall->Lock);
    }
 
@@ -2332,7 +2332,6 @@ int ooH323NewCall(char *callToken) {
 
 int ooH323MakeCall(char *dest, char *callToken, ooCallOptions *opts)
 {
-   OOCTXT *pctxt;
    OOH323CallData *call;
    int ret=OO_OK, i=0, irand=0;
    char tmp[2+8*4+7]="\0";
@@ -2360,7 +2359,6 @@ int ooH323MakeCall(char *dest, char *callToken, ooCallOptions *opts)
       return OO_FAILED;
    }
 
-   pctxt = call->pctxt;
    if(opts)
    {
       if(opts->fastStart)
diff --git a/addons/ooh323c/src/perutil.c b/addons/ooh323c/src/perutil.c
index c6a608ca7dd380d0cd9c8afbbc901e6200511cca..75368279a1941fd3306f10cde67b9fe89c4dadba 100644
--- a/addons/ooh323c/src/perutil.c
+++ b/addons/ooh323c/src/perutil.c
@@ -168,7 +168,7 @@ Asn1SizeCnst* getSizeConstraint (OOCTXT* pctxt, ASN1BOOL extbit)
 int checkSizeConstraint(OOCTXT* pctxt, int size)
 {
    Asn1SizeCnst* pSize;
-   ASN1UINT lower, upper;
+   ASN1UINT upper;
    ASN1BOOL extbit;
    int      stat;
 
@@ -186,7 +186,6 @@ int checkSizeConstraint(OOCTXT* pctxt, int size)
 
    pSize = getSizeConstraint (pctxt, extbit);
 
-   lower = (pSize) ? pSize->lower : 0;
    upper = (pSize) ? pSize->upper : ASN1UINT_MAX;
 
    if (upper < (ASN1UINT)size) {
diff --git a/addons/ooh323cDriver.c b/addons/ooh323cDriver.c
index 1672849cab3b33527cd3a57a842f98756c37536f..e2533fa6e3d187d1496d4dc29bf733320af868db 100644
--- a/addons/ooh323cDriver.c
+++ b/addons/ooh323cDriver.c
@@ -82,7 +82,7 @@ void* ooh323c_call_thread(void* dummy)
  struct callthread* mycthread = (struct callthread *)dummy;
  struct pollfd pfds[1];
  char c;
- int res;
+ int res = 0;
 
  do {
 
@@ -114,7 +114,7 @@ void* ooh323c_call_thread(void* dummy)
 	ast_mutex_unlock(&mycthread->lock);
  	ast_mutex_unlock(&callThreadsLock);
 
- } while (mycthread->call != NULL);
+ } while (mycthread->call != NULL && res == 0);
 
  
  ast_mutex_destroy(&mycthread->lock);
@@ -129,7 +129,6 @@ void* ooh323c_call_thread(void* dummy)
 
 int ooh323c_start_call_thread(ooCallData *call) {
  char c = 'c';
- int res;
  struct callthread *cur = callThreads;
 
  ast_mutex_lock(&callThreadsLock);
@@ -138,9 +137,11 @@ int ooh323c_start_call_thread(ooCallData *call) {
  }
  ast_mutex_unlock(&callThreadsLock);
 
- if (cur != NULL && cur->inUse) {
+ if (cur != NULL) {
+   if (cur->inUse || write(cur->thePipe[1], &c, 1) < 0) {
 	ast_mutex_unlock(&cur->lock);
 	cur = NULL;
+   }
  }
 
 /* make new thread */
@@ -181,7 +182,6 @@ int ooh323c_start_call_thread(ooCallData *call) {
 		ast_debug(1,"using existing call thread for call %s\n", call->callToken);
 	cur->inUse = TRUE;
 	cur->call = call;
-	res = write(cur->thePipe[1], &c, 1);
 	ast_mutex_unlock(&cur->lock);
 
  }