[asterisk-commits] wedhorn: branch 12 r405924 - /branches/12/channels/chan_skinny.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Jan 20 15:53:05 CST 2014
Author: wedhorn
Date: Mon Jan 20 15:53:02 2014
New Revision: 405924
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=405924
Log:
Skinny: fix up session logging.
Logging from the skinny session loop was providing some incorrect reasons
for exiting the loop. Cleaned up messages and handling so correct reason
displayed.
Modified:
branches/12/channels/chan_skinny.c
Modified: branches/12/channels/chan_skinny.c
URL: http://svnview.digium.com/svn/asterisk/branches/12/channels/chan_skinny.c?view=diff&rev=405924&r1=405923&r2=405924
==============================================================================
--- branches/12/channels/chan_skinny.c (original)
+++ branches/12/channels/chan_skinny.c Mon Jan 20 15:53:02 2014
@@ -7471,7 +7471,7 @@
struct skinny_line *l;
struct skinny_speeddial *sd;
- ast_verb(3, "Ending Skinny session from %s\n", ast_inet_ntoa(s->sin.sin_addr));
+ ast_verb(3, "Ending Skinny session from %s at %s\n", d ? d->name : "unknown", ast_inet_ntoa(s->sin.sin_addr));
if (s->lockstate) {
ast_mutex_unlock(&s->lock);
@@ -7517,6 +7517,7 @@
static void *skinny_session(void *data)
{
int res;
+ int bytesread;
struct skinny_req *req = NULL;
struct skinnysession *s = data;
@@ -7592,41 +7593,41 @@
break;
}
- res = 0;
+ bytesread = 0;
while (1) {
- int bytesread = res;
if ((res = read(s->fd, &req->data+bytesread, dlen-bytesread)) < 0) {
+ ast_log(LOG_WARNING, "Data read() returned error: %s\n", strerror(errno));
break;
}
- res += bytesread;
- if (res >= dlen) {
+ bytesread += res;
+ if (bytesread >= dlen) {
+ if (res < bytesread) {
+ ast_log(LOG_WARNING, "Rest of partial data received.\n");
+ }
+ if (bytesread > dlen) {
+ ast_log(LOG_WARNING, "Client sent wrong amount of data (%d), expected (%d).\n", bytesread, dlen);
+ res = -1;
+ }
break;
}
- ast_log(LOG_WARNING, "Partial data received, waiting (%d bytes read of %d)\n", res, dlen);
+
+ ast_log(LOG_WARNING, "Partial data received, waiting (%d bytes read of %d)\n", bytesread, dlen);
if (sched_yield() < 0) {
ast_log(LOG_WARNING, "Data yield() returned error: %s\n", strerror(errno));
+ res = -1;
break;
}
}
- if (res < 0) {
- ast_log(LOG_WARNING, "Data read() returned error: %s\n", strerror(errno));
- break;
- }
- if (res != dlen) {
- ast_log(LOG_WARNING, "Client sent wrong amount of data (%d), expected (%d).\n", res, dlen);
- break;
- }
s->lockstate = 0;
ast_mutex_unlock(&s->lock);
+ if (res < 0) {
+ break;
+ }
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
res = handle_message(req, s);
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
- if (res < 0) {
- ast_verb(3, "Ending Skinny session from %s\n", ast_inet_ntoa(s->sin.sin_addr));
- break;
- }
}
if (req) {
More information about the asterisk-commits
mailing list