diff --git a/channels/h323/chan_h323.c b/channels/h323/chan_h323.c
index eb148e5371e54a27b16ee7efbc15a23824bb7a0a..e94978e57b78e807cb0ecd8a90a62479c5a2331f 100755
--- a/channels/h323/chan_h323.c
+++ b/channels/h323/chan_h323.c
@@ -406,8 +406,15 @@ static int oh323_call(struct ast_channel *c, char *dest, int timeout)
 
 	/* Copy callerid, if there is any */
 	if (c->callerid) {
-		p->calloptions.callerid = strdup(c->callerid);
-	}
+		char *tmp = strchr(c->callerid, '"');
+		if (!tmp) {
+			p->calloptions.callerid = malloc(80); // evil
+			// sprintf(p->calloptions.callerid, "\"%s\"", c->callerid);
+			sprintf(p->calloptions.callerid, "\"\" <%s>", c->callerid);
+		} else {
+			p->calloptions.callerid = strdup(c->callerid);
+		}	
+	 }
 
 	res = h323_make_call(called_addr, &(p->cd), p->calloptions);