Changeset 894:43fb27a9037f in freeDiameter for libfdcore/sctp.c
- Timestamp:
- Nov 30, 2012, 6:51:49 AM (11 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libfdcore/sctp.c
r817 r894 1068 1068 size_t mempagesz = sysconf(_SC_PAGESIZE); /* We alloc buffer by memory pages for efficiency */ 1069 1069 int timedout = 0; 1070 struct timespec recv_on; 1070 1071 1071 1072 TRACE_ENTRY("%p %p %p %p %p", conn, strid, buf, len, event); … … 1086 1087 /* We will loop while all data is not received. */ 1087 1088 incomplete: 1088 if (datasize == bufsz ) {1089 if (datasize == bufsz - sizeof(struct timespec)) { 1089 1090 /* The buffer is full, enlarge it */ 1090 1091 bufsz += mempagesz; 1091 CHECK_MALLOC( data = realloc(data, bufsz ) );1092 CHECK_MALLOC( data = realloc(data, bufsz ) ); 1092 1093 } 1093 1094 /* the new data will be received following the preceding */ 1094 1095 memset(&iov, 0, sizeof(iov)); 1095 1096 iov.iov_base = data + datasize ; 1096 iov.iov_len = bufsz - datasize;1097 iov.iov_len = bufsz - sizeof(struct timespec) - datasize; 1097 1098 1098 1099 /* Receive data from the socket */ … … 1188 1189 } 1189 1190 1191 /* Piggy-tail the timestamp of reception */ 1192 CHECK_SYS_DO( clock_gettime(CLOCK_REALTIME, &recv_on), /* continue */ ); 1193 memcpy(data + datasize, &recv_on, sizeof(struct timespec)); 1194 1190 1195 /* From this point, we have received a message */ 1191 1196 *event = FDEVP_CNX_MSG_RECV;
Note: See TracChangeset
for help on using the changeset viewer.