| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/bio/bss_dgram.c |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||||||||||||||
| 2 | - | |||||||||||||||||||||||||
| 3 | - | |||||||||||||||||||||||||
| 4 | - | |||||||||||||||||||||||||
| 5 | - | |||||||||||||||||||||||||
| 6 | - | |||||||||||||||||||||||||
| 7 | - | |||||||||||||||||||||||||
| 8 | - | |||||||||||||||||||||||||
| 9 | static int dgram_write(BIO *h, const char *buf, int num); | - | ||||||||||||||||||||||||
| 10 | static int dgram_read(BIO *h, char *buf, int size); | - | ||||||||||||||||||||||||
| 11 | static int dgram_puts(BIO *h, const char *str); | - | ||||||||||||||||||||||||
| 12 | static long dgram_ctrl(BIO *h, int cmd, long arg1, void *arg2); | - | ||||||||||||||||||||||||
| 13 | static int dgram_new(BIO *h); | - | ||||||||||||||||||||||||
| 14 | static int dgram_free(BIO *data); | - | ||||||||||||||||||||||||
| 15 | static int dgram_clear(BIO *bio); | - | ||||||||||||||||||||||||
| 16 | - | |||||||||||||||||||||||||
| 17 | - | |||||||||||||||||||||||||
| 18 | static int BIO_dgram_should_retry(int s); | - | ||||||||||||||||||||||||
| 19 | - | |||||||||||||||||||||||||
| 20 | static const BIO_METHOD methods_dgramp = { | - | ||||||||||||||||||||||||
| 21 | .type = (21|0x0400|0x0100), | - | ||||||||||||||||||||||||
| 22 | .name = "datagram socket", | - | ||||||||||||||||||||||||
| 23 | .bwrite = dgram_write, | - | ||||||||||||||||||||||||
| 24 | .bread = dgram_read, | - | ||||||||||||||||||||||||
| 25 | .bputs = dgram_puts, | - | ||||||||||||||||||||||||
| 26 | .ctrl = dgram_ctrl, | - | ||||||||||||||||||||||||
| 27 | .create = dgram_new, | - | ||||||||||||||||||||||||
| 28 | .destroy = dgram_free | - | ||||||||||||||||||||||||
| 29 | }; | - | ||||||||||||||||||||||||
| 30 | - | |||||||||||||||||||||||||
| 31 | - | |||||||||||||||||||||||||
| 32 | typedef struct bio_dgram_data_st { | - | ||||||||||||||||||||||||
| 33 | union { | - | ||||||||||||||||||||||||
| 34 | struct sockaddr sa; | - | ||||||||||||||||||||||||
| 35 | struct sockaddr_in sa_in; | - | ||||||||||||||||||||||||
| 36 | struct sockaddr_in6 sa_in6; | - | ||||||||||||||||||||||||
| 37 | } peer; | - | ||||||||||||||||||||||||
| 38 | unsigned int connected; | - | ||||||||||||||||||||||||
| 39 | unsigned int _errno; | - | ||||||||||||||||||||||||
| 40 | unsigned int mtu; | - | ||||||||||||||||||||||||
| 41 | struct timeval next_timeout; | - | ||||||||||||||||||||||||
| 42 | struct timeval socket_timeout; | - | ||||||||||||||||||||||||
| 43 | } bio_dgram_data; | - | ||||||||||||||||||||||||
| 44 | - | |||||||||||||||||||||||||
| 45 | - | |||||||||||||||||||||||||
| 46 | const BIO_METHOD * | - | ||||||||||||||||||||||||
| 47 | BIO_s_datagram(void) | - | ||||||||||||||||||||||||
| 48 | { | - | ||||||||||||||||||||||||
| 49 | return never executed: (&methods_dgramp);return (&methods_dgramp);never executed: return (&methods_dgramp); | 0 | ||||||||||||||||||||||||
| 50 | } | - | ||||||||||||||||||||||||
| 51 | - | |||||||||||||||||||||||||
| 52 | BIO * | - | ||||||||||||||||||||||||
| 53 | BIO_new_dgram(int fd, int close_flag) | - | ||||||||||||||||||||||||
| 54 | { | - | ||||||||||||||||||||||||
| 55 | BIO *ret; | - | ||||||||||||||||||||||||
| 56 | - | |||||||||||||||||||||||||
| 57 | ret = BIO_new(BIO_s_datagram()); | - | ||||||||||||||||||||||||
| 58 | if (ret ==
| 0 | ||||||||||||||||||||||||
| 59 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 60 | ) | - | ||||||||||||||||||||||||
| 61 | return never executed: (return ( ((void *)0) );never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 62 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 63 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 64 | BIO_int_ctrl(ret,104,close_flag,fd); | - | ||||||||||||||||||||||||
| 65 | return never executed: (ret);return (ret);never executed: return (ret); | 0 | ||||||||||||||||||||||||
| 66 | } | - | ||||||||||||||||||||||||
| 67 | - | |||||||||||||||||||||||||
| 68 | static int | - | ||||||||||||||||||||||||
| 69 | dgram_new(BIO *bi) | - | ||||||||||||||||||||||||
| 70 | { | - | ||||||||||||||||||||||||
| 71 | bio_dgram_data *data = | - | ||||||||||||||||||||||||
| 72 | ((void *)0) | - | ||||||||||||||||||||||||
| 73 | ; | - | ||||||||||||||||||||||||
| 74 | - | |||||||||||||||||||||||||
| 75 | bi->init = 0; | - | ||||||||||||||||||||||||
| 76 | bi->num = 0; | - | ||||||||||||||||||||||||
| 77 | data = calloc(1, sizeof(bio_dgram_data)); | - | ||||||||||||||||||||||||
| 78 | if (data ==
| 0 | ||||||||||||||||||||||||
| 79 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 80 | ) | - | ||||||||||||||||||||||||
| 81 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||||||||||||||
| 82 | bi->ptr = data; | - | ||||||||||||||||||||||||
| 83 | - | |||||||||||||||||||||||||
| 84 | bi->flags = 0; | - | ||||||||||||||||||||||||
| 85 | return never executed: (1);return (1);never executed: return (1); | 0 | ||||||||||||||||||||||||
| 86 | } | - | ||||||||||||||||||||||||
| 87 | - | |||||||||||||||||||||||||
| 88 | static int | - | ||||||||||||||||||||||||
| 89 | dgram_free(BIO *a) | - | ||||||||||||||||||||||||
| 90 | { | - | ||||||||||||||||||||||||
| 91 | bio_dgram_data *data; | - | ||||||||||||||||||||||||
| 92 | - | |||||||||||||||||||||||||
| 93 | if (a ==
| 0 | ||||||||||||||||||||||||
| 94 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 95 | ) | - | ||||||||||||||||||||||||
| 96 | return never executed: (0);return (0);never executed: return (0); | 0 | ||||||||||||||||||||||||
| 97 | if (!dgram_clear(a)
| 0 | ||||||||||||||||||||||||
| 98 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||||||||||||||
| 99 | - | |||||||||||||||||||||||||
| 100 | data = (bio_dgram_data *)a->ptr; | - | ||||||||||||||||||||||||
| 101 | free(data); | - | ||||||||||||||||||||||||
| 102 | - | |||||||||||||||||||||||||
| 103 | return never executed: (1);return (1);never executed: return (1); | 0 | ||||||||||||||||||||||||
| 104 | } | - | ||||||||||||||||||||||||
| 105 | - | |||||||||||||||||||||||||
| 106 | static int | - | ||||||||||||||||||||||||
| 107 | dgram_clear(BIO *a) | - | ||||||||||||||||||||||||
| 108 | { | - | ||||||||||||||||||||||||
| 109 | if (a ==
| 0 | ||||||||||||||||||||||||
| 110 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 111 | ) | - | ||||||||||||||||||||||||
| 112 | return never executed: (0);return (0);never executed: return (0); | 0 | ||||||||||||||||||||||||
| 113 | if (a->shutdown
| 0 | ||||||||||||||||||||||||
| 114 | if (a->init
| 0 | ||||||||||||||||||||||||
| 115 | shutdown(a->num, | - | ||||||||||||||||||||||||
| 116 | SHUT_RDWR | - | ||||||||||||||||||||||||
| 117 | ); | - | ||||||||||||||||||||||||
| 118 | close(a->num); | - | ||||||||||||||||||||||||
| 119 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 120 | a->init = 0; | - | ||||||||||||||||||||||||
| 121 | a->flags = 0; | - | ||||||||||||||||||||||||
| 122 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 123 | return never executed: (1);return (1);never executed: return (1); | 0 | ||||||||||||||||||||||||
| 124 | } | - | ||||||||||||||||||||||||
| 125 | - | |||||||||||||||||||||||||
| 126 | static void | - | ||||||||||||||||||||||||
| 127 | dgram_adjust_rcv_timeout(BIO *b) | - | ||||||||||||||||||||||||
| 128 | { | - | ||||||||||||||||||||||||
| 129 | - | |||||||||||||||||||||||||
| 130 | bio_dgram_data *data = (bio_dgram_data *)b->ptr; | - | ||||||||||||||||||||||||
| 131 | - | |||||||||||||||||||||||||
| 132 | - | |||||||||||||||||||||||||
| 133 | if (data->next_timeout.tv_sec > 0
| 0 | ||||||||||||||||||||||||
| 134 | struct timeval timenow, timeleft; | - | ||||||||||||||||||||||||
| 135 | - | |||||||||||||||||||||||||
| 136 | - | |||||||||||||||||||||||||
| 137 | socklen_t sz = sizeof(data->socket_timeout); | - | ||||||||||||||||||||||||
| 138 | if (getsockopt(b->num,
| 0 | ||||||||||||||||||||||||
| 139 | 1
| 0 | ||||||||||||||||||||||||
| 140 | ,
| 0 | ||||||||||||||||||||||||
| 141 | 20
| 0 | ||||||||||||||||||||||||
| 142 | ,
| 0 | ||||||||||||||||||||||||
| 143 | &(data->socket_timeout), &sz) < 0
| 0 | ||||||||||||||||||||||||
| 144 | perror("getsockopt"); | - | ||||||||||||||||||||||||
| 145 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 146 | - | |||||||||||||||||||||||||
| 147 | - | |||||||||||||||||||||||||
| 148 | gettimeofday(&timenow, | - | ||||||||||||||||||||||||
| 149 | ((void *)0) | - | ||||||||||||||||||||||||
| 150 | ); | - | ||||||||||||||||||||||||
| 151 | - | |||||||||||||||||||||||||
| 152 | - | |||||||||||||||||||||||||
| 153 | memcpy(&timeleft, &(data->next_timeout), sizeof(struct timeval)); | - | ||||||||||||||||||||||||
| 154 | timeleft.tv_sec -= timenow.tv_sec; | - | ||||||||||||||||||||||||
| 155 | timeleft.tv_usec -= timenow.tv_usec; | - | ||||||||||||||||||||||||
| 156 | if (timeleft.tv_usec < 0
| 0 | ||||||||||||||||||||||||
| 157 | timeleft.tv_sec--; | - | ||||||||||||||||||||||||
| 158 | timeleft.tv_usec += 1000000; | - | ||||||||||||||||||||||||
| 159 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 160 | - | |||||||||||||||||||||||||
| 161 | if (timeleft.tv_sec < 0
| 0 | ||||||||||||||||||||||||
| 162 | timeleft.tv_sec = 0; | - | ||||||||||||||||||||||||
| 163 | timeleft.tv_usec = 1; | - | ||||||||||||||||||||||||
| 164 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 165 | - | |||||||||||||||||||||||||
| 166 | - | |||||||||||||||||||||||||
| 167 | - | |||||||||||||||||||||||||
| 168 | - | |||||||||||||||||||||||||
| 169 | if ((data->socket_timeout.tv_sec == 0
| 0 | ||||||||||||||||||||||||
| 170 | data->socket_timeout.tv_usec == 0
| 0 | ||||||||||||||||||||||||
| 171 | (
| 0 | ||||||||||||||||||||||||
| 172 | (data->socket_timeout.tv_sec == timeleft.tv_sec
| 0 | ||||||||||||||||||||||||
| 173 | data->socket_timeout.tv_usec >= timeleft.tv_usec
| 0 | ||||||||||||||||||||||||
| 174 | if (setsockopt(b->num,
| 0 | ||||||||||||||||||||||||
| 175 | 1
| 0 | ||||||||||||||||||||||||
| 176 | ,
| 0 | ||||||||||||||||||||||||
| 177 | 20
| 0 | ||||||||||||||||||||||||
| 178 | ,
| 0 | ||||||||||||||||||||||||
| 179 | &timeleft, sizeof(struct timeval)) < 0
| 0 | ||||||||||||||||||||||||
| 180 | perror("setsockopt"); | - | ||||||||||||||||||||||||
| 181 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 182 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 183 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 184 | - | |||||||||||||||||||||||||
| 185 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 186 | - | |||||||||||||||||||||||||
| 187 | static void | - | ||||||||||||||||||||||||
| 188 | dgram_reset_rcv_timeout(BIO *b) | - | ||||||||||||||||||||||||
| 189 | { | - | ||||||||||||||||||||||||
| 190 | - | |||||||||||||||||||||||||
| 191 | bio_dgram_data *data = (bio_dgram_data *)b->ptr; | - | ||||||||||||||||||||||||
| 192 | - | |||||||||||||||||||||||||
| 193 | - | |||||||||||||||||||||||||
| 194 | if (data->next_timeout.tv_sec > 0
| 0 | ||||||||||||||||||||||||
| 195 | if (setsockopt(b->num,
| 0 | ||||||||||||||||||||||||
| 196 | 1
| 0 | ||||||||||||||||||||||||
| 197 | ,
| 0 | ||||||||||||||||||||||||
| 198 | 20
| 0 | ||||||||||||||||||||||||
| 199 | ,
| 0 | ||||||||||||||||||||||||
| 200 | &(data->socket_timeout), sizeof(struct timeval)) < 0
| 0 | ||||||||||||||||||||||||
| 201 | perror("setsockopt"); | - | ||||||||||||||||||||||||
| 202 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 203 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 204 | - | |||||||||||||||||||||||||
| 205 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 206 | - | |||||||||||||||||||||||||
| 207 | static int | - | ||||||||||||||||||||||||
| 208 | dgram_read(BIO *b, char *out, int outl) | - | ||||||||||||||||||||||||
| 209 | { | - | ||||||||||||||||||||||||
| 210 | int ret = 0; | - | ||||||||||||||||||||||||
| 211 | bio_dgram_data *data = (bio_dgram_data *)b->ptr; | - | ||||||||||||||||||||||||
| 212 | - | |||||||||||||||||||||||||
| 213 | struct { | - | ||||||||||||||||||||||||
| 214 | socklen_t len; | - | ||||||||||||||||||||||||
| 215 | union { | - | ||||||||||||||||||||||||
| 216 | struct sockaddr sa; | - | ||||||||||||||||||||||||
| 217 | struct sockaddr_in sa_in; | - | ||||||||||||||||||||||||
| 218 | struct sockaddr_in6 sa_in6; | - | ||||||||||||||||||||||||
| 219 | } peer; | - | ||||||||||||||||||||||||
| 220 | } sa; | - | ||||||||||||||||||||||||
| 221 | - | |||||||||||||||||||||||||
| 222 | sa.len = sizeof(sa.peer); | - | ||||||||||||||||||||||||
| 223 | - | |||||||||||||||||||||||||
| 224 | if (out !=
| 0 | ||||||||||||||||||||||||
| 225 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 226 | ) { | - | ||||||||||||||||||||||||
| 227 | - | |||||||||||||||||||||||||
| 228 | (*__errno_location ()) | - | ||||||||||||||||||||||||
| 229 | = 0; | - | ||||||||||||||||||||||||
| 230 | memset(&sa.peer, 0, sizeof(sa.peer)); | - | ||||||||||||||||||||||||
| 231 | dgram_adjust_rcv_timeout(b); | - | ||||||||||||||||||||||||
| 232 | ret = recvfrom(b->num, out, outl, 0, &sa.peer.sa, &sa.len); | - | ||||||||||||||||||||||||
| 233 | - | |||||||||||||||||||||||||
| 234 | if (! data->connected
| 0 | ||||||||||||||||||||||||
| 235 | BIO_ctrl(b, 44, 0, &sa.peer); never executed: BIO_ctrl(b, 44, 0, &sa.peer); | 0 | ||||||||||||||||||||||||
| 236 | - | |||||||||||||||||||||||||
| 237 | BIO_clear_flags(b, ((0x01|0x02|0x04)|0x08)); | - | ||||||||||||||||||||||||
| 238 | if (ret < 0
| 0 | ||||||||||||||||||||||||
| 239 | if (BIO_dgram_should_retry(ret)
| 0 | ||||||||||||||||||||||||
| 240 | BIO_set_flags(b, (0x01|0x08)); | - | ||||||||||||||||||||||||
| 241 | data->_errno = | - | ||||||||||||||||||||||||
| 242 | (*__errno_location ()) | - | ||||||||||||||||||||||||
| 243 | ; | - | ||||||||||||||||||||||||
| 244 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 245 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 246 | - | |||||||||||||||||||||||||
| 247 | dgram_reset_rcv_timeout(b); | - | ||||||||||||||||||||||||
| 248 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 249 | return never executed: (ret);return (ret);never executed: return (ret); | 0 | ||||||||||||||||||||||||
| 250 | } | - | ||||||||||||||||||||||||
| 251 | - | |||||||||||||||||||||||||
| 252 | static int | - | ||||||||||||||||||||||||
| 253 | dgram_write(BIO *b, const char *in, int inl) | - | ||||||||||||||||||||||||
| 254 | { | - | ||||||||||||||||||||||||
| 255 | int ret; | - | ||||||||||||||||||||||||
| 256 | bio_dgram_data *data = (bio_dgram_data *)b->ptr; | - | ||||||||||||||||||||||||
| 257 | - | |||||||||||||||||||||||||
| 258 | (*__errno_location ()) | - | ||||||||||||||||||||||||
| 259 | = 0; | - | ||||||||||||||||||||||||
| 260 | - | |||||||||||||||||||||||||
| 261 | if (data->connected
| 0 | ||||||||||||||||||||||||
| 262 | ret = write(b->num, in, inl); never executed: ret = write(b->num, in, inl); | 0 | ||||||||||||||||||||||||
| 263 | else { | - | ||||||||||||||||||||||||
| 264 | int peerlen = sizeof(data->peer); | - | ||||||||||||||||||||||||
| 265 | - | |||||||||||||||||||||||||
| 266 | if (data->peer.sa.sa_family ==
| 0 | ||||||||||||||||||||||||
| 267 | 2
| 0 | ||||||||||||||||||||||||
| 268 | ) | - | ||||||||||||||||||||||||
| 269 | peerlen = sizeof(data->peer.sa_in); never executed: peerlen = sizeof(data->peer.sa_in); | 0 | ||||||||||||||||||||||||
| 270 | else if (data->peer.sa.sa_family ==
| 0 | ||||||||||||||||||||||||
| 271 | 10
| 0 | ||||||||||||||||||||||||
| 272 | ) | - | ||||||||||||||||||||||||
| 273 | peerlen = sizeof(data->peer.sa_in6); never executed: peerlen = sizeof(data->peer.sa_in6); | 0 | ||||||||||||||||||||||||
| 274 | ret = sendto(b->num, in, inl, 0, &data->peer.sa, peerlen); | - | ||||||||||||||||||||||||
| 275 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 276 | - | |||||||||||||||||||||||||
| 277 | BIO_clear_flags(b, ((0x01|0x02|0x04)|0x08)); | - | ||||||||||||||||||||||||
| 278 | if (ret <= 0
| 0 | ||||||||||||||||||||||||
| 279 | if (BIO_dgram_should_retry(ret)
| 0 | ||||||||||||||||||||||||
| 280 | BIO_set_flags(b, (0x02|0x08)); | - | ||||||||||||||||||||||||
| 281 | - | |||||||||||||||||||||||||
| 282 | data->_errno = | - | ||||||||||||||||||||||||
| 283 | (*__errno_location ()) | - | ||||||||||||||||||||||||
| 284 | ; | - | ||||||||||||||||||||||||
| 285 | - | |||||||||||||||||||||||||
| 286 | - | |||||||||||||||||||||||||
| 287 | - | |||||||||||||||||||||||||
| 288 | - | |||||||||||||||||||||||||
| 289 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 290 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 291 | return never executed: (ret);return (ret);never executed: return (ret); | 0 | ||||||||||||||||||||||||
| 292 | } | - | ||||||||||||||||||||||||
| 293 | - | |||||||||||||||||||||||||
| 294 | static long | - | ||||||||||||||||||||||||
| 295 | dgram_ctrl(BIO *b, int cmd, long num, void *ptr) | - | ||||||||||||||||||||||||
| 296 | { | - | ||||||||||||||||||||||||
| 297 | long ret = 1; | - | ||||||||||||||||||||||||
| 298 | int *ip; | - | ||||||||||||||||||||||||
| 299 | struct sockaddr *to = | - | ||||||||||||||||||||||||
| 300 | ((void *)0) | - | ||||||||||||||||||||||||
| 301 | ; | - | ||||||||||||||||||||||||
| 302 | bio_dgram_data *data = | - | ||||||||||||||||||||||||
| 303 | ((void *)0) | - | ||||||||||||||||||||||||
| 304 | ; | - | ||||||||||||||||||||||||
| 305 | - | |||||||||||||||||||||||||
| 306 | int sockopt_val = 0; | - | ||||||||||||||||||||||||
| 307 | socklen_t sockopt_len; | - | ||||||||||||||||||||||||
| 308 | - | |||||||||||||||||||||||||
| 309 | socklen_t addr_len; | - | ||||||||||||||||||||||||
| 310 | union { | - | ||||||||||||||||||||||||
| 311 | struct sockaddr sa; | - | ||||||||||||||||||||||||
| 312 | struct sockaddr_in s4; | - | ||||||||||||||||||||||||
| 313 | struct sockaddr_in6 s6; | - | ||||||||||||||||||||||||
| 314 | } addr; | - | ||||||||||||||||||||||||
| 315 | - | |||||||||||||||||||||||||
| 316 | - | |||||||||||||||||||||||||
| 317 | data = (bio_dgram_data *)b->ptr; | - | ||||||||||||||||||||||||
| 318 | - | |||||||||||||||||||||||||
| 319 | switch (cmd) { | - | ||||||||||||||||||||||||
| 320 | case never executed: 1:case 1:never executed: case 1: | 0 | ||||||||||||||||||||||||
| 321 | num = 0; | - | ||||||||||||||||||||||||
| 322 | case never executed: 128:case 128:never executed: case 128:code before this statement never executed: case 128: | 0 | ||||||||||||||||||||||||
| 323 | ret = 0; | - | ||||||||||||||||||||||||
| 324 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 325 | case never executed: 133:case 133:never executed: case 133: | 0 | ||||||||||||||||||||||||
| 326 | case never executed: 3:case 3:never executed: case 3: | 0 | ||||||||||||||||||||||||
| 327 | ret = 0; | - | ||||||||||||||||||||||||
| 328 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 329 | case never executed: 104:case 104:never executed: case 104: | 0 | ||||||||||||||||||||||||
| 330 | dgram_clear(b); | - | ||||||||||||||||||||||||
| 331 | b->num= *((int *)ptr); | - | ||||||||||||||||||||||||
| 332 | b->shutdown = (int)num; | - | ||||||||||||||||||||||||
| 333 | b->init = 1; | - | ||||||||||||||||||||||||
| 334 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 335 | case never executed: 105:case 105:never executed: case 105: | 0 | ||||||||||||||||||||||||
| 336 | if (b->init
| 0 | ||||||||||||||||||||||||
| 337 | ip = (int *)ptr; | - | ||||||||||||||||||||||||
| 338 | if (ip !=
| 0 | ||||||||||||||||||||||||
| 339 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 340 | ) | - | ||||||||||||||||||||||||
| 341 | * never executed: ip = b->num;*ip = b->num;never executed: *ip = b->num; | 0 | ||||||||||||||||||||||||
| 342 | ret = b->num; | - | ||||||||||||||||||||||||
| 343 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
| 344 | ret = -1; never executed: ret = -1; | 0 | ||||||||||||||||||||||||
| 345 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 346 | case never executed: 8:case 8:never executed: case 8: | 0 | ||||||||||||||||||||||||
| 347 | ret = b->shutdown; | - | ||||||||||||||||||||||||
| 348 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 349 | case never executed: 9:case 9:never executed: case 9: | 0 | ||||||||||||||||||||||||
| 350 | b->shutdown = (int)num; | - | ||||||||||||||||||||||||
| 351 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 352 | case never executed: 10:case 10:never executed: case 10: | 0 | ||||||||||||||||||||||||
| 353 | case never executed: 13:case 13:never executed: case 13: | 0 | ||||||||||||||||||||||||
| 354 | ret = 0; | - | ||||||||||||||||||||||||
| 355 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 356 | case never executed: 12:case 12:never executed: case 12: | 0 | ||||||||||||||||||||||||
| 357 | case never executed: 11:case 11:never executed: case 11: | 0 | ||||||||||||||||||||||||
| 358 | ret = 1; | - | ||||||||||||||||||||||||
| 359 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 360 | case never executed: 31:case 31:never executed: case 31: | 0 | ||||||||||||||||||||||||
| 361 | to = (struct sockaddr *)ptr; | - | ||||||||||||||||||||||||
| 362 | switch (to->sa_family) { | - | ||||||||||||||||||||||||
| 363 | case never executed: case 2 :never executed: case 2 : | 0 | ||||||||||||||||||||||||
| 364 | 2 never executed: case 2 : | 0 | ||||||||||||||||||||||||
| 365 | : never executed: case 2 : | 0 | ||||||||||||||||||||||||
| 366 | memcpy(&data->peer, to, sizeof(data->peer.sa_in)); | - | ||||||||||||||||||||||||
| 367 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 368 | case never executed: case 10 :never executed: case 10 : | 0 | ||||||||||||||||||||||||
| 369 | 10 never executed: case 10 : | 0 | ||||||||||||||||||||||||
| 370 | : never executed: case 10 : | 0 | ||||||||||||||||||||||||
| 371 | memcpy(&data->peer, to, sizeof(data->peer.sa_in6)); | - | ||||||||||||||||||||||||
| 372 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 373 | default never executed: :default:never executed: default: | 0 | ||||||||||||||||||||||||
| 374 | memcpy(&data->peer, to, sizeof(data->peer.sa)); | - | ||||||||||||||||||||||||
| 375 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 376 | } | - | ||||||||||||||||||||||||
| 377 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 378 | - | |||||||||||||||||||||||||
| 379 | case never executed: 39:case 39:never executed: case 39: | 0 | ||||||||||||||||||||||||
| 380 | - | |||||||||||||||||||||||||
| 381 | addr_len = (socklen_t)sizeof(addr); | - | ||||||||||||||||||||||||
| 382 | memset((void *)&addr, 0, sizeof(addr)); | - | ||||||||||||||||||||||||
| 383 | if (getsockname(b->num, &addr.sa, &addr_len) < 0
| 0 | ||||||||||||||||||||||||
| 384 | ret = 0; | - | ||||||||||||||||||||||||
| 385 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 386 | } | - | ||||||||||||||||||||||||
| 387 | switch (addr.sa.sa_family) { | - | ||||||||||||||||||||||||
| 388 | case never executed: case 2 :never executed: case 2 : | 0 | ||||||||||||||||||||||||
| 389 | 2 never executed: case 2 : | 0 | ||||||||||||||||||||||||
| 390 | : never executed: case 2 : | 0 | ||||||||||||||||||||||||
| 391 | sockopt_val = | - | ||||||||||||||||||||||||
| 392 | 2 | - | ||||||||||||||||||||||||
| 393 | ; | - | ||||||||||||||||||||||||
| 394 | ret = setsockopt(b->num, | - | ||||||||||||||||||||||||
| 395 | IPPROTO_IP | - | ||||||||||||||||||||||||
| 396 | , | - | ||||||||||||||||||||||||
| 397 | 10 | - | ||||||||||||||||||||||||
| 398 | , | - | ||||||||||||||||||||||||
| 399 | &sockopt_val, sizeof(sockopt_val)); | - | ||||||||||||||||||||||||
| 400 | if (ret < 0
| 0 | ||||||||||||||||||||||||
| 401 | perror("setsockopt"); never executed: perror("setsockopt"); | 0 | ||||||||||||||||||||||||
| 402 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 403 | - | |||||||||||||||||||||||||
| 404 | case never executed: case 10 :never executed: case 10 : | 0 | ||||||||||||||||||||||||
| 405 | 10 never executed: case 10 : | 0 | ||||||||||||||||||||||||
| 406 | : never executed: case 10 : | 0 | ||||||||||||||||||||||||
| 407 | sockopt_val = | - | ||||||||||||||||||||||||
| 408 | 2 | - | ||||||||||||||||||||||||
| 409 | ; | - | ||||||||||||||||||||||||
| 410 | ret = setsockopt(b->num, | - | ||||||||||||||||||||||||
| 411 | IPPROTO_IPV6 | - | ||||||||||||||||||||||||
| 412 | , | - | ||||||||||||||||||||||||
| 413 | - | |||||||||||||||||||||||||
| 414 | 23 | - | ||||||||||||||||||||||||
| 415 | , &sockopt_val, | - | ||||||||||||||||||||||||
| 416 | sizeof(sockopt_val)); | - | ||||||||||||||||||||||||
| 417 | if (ret < 0
| 0 | ||||||||||||||||||||||||
| 418 | perror("setsockopt"); never executed: perror("setsockopt"); | 0 | ||||||||||||||||||||||||
| 419 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 420 | - | |||||||||||||||||||||||||
| 421 | default never executed: :default:never executed: default: | 0 | ||||||||||||||||||||||||
| 422 | ret = -1; | - | ||||||||||||||||||||||||
| 423 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 424 | } | - | ||||||||||||||||||||||||
| 425 | - | |||||||||||||||||||||||||
| 426 | - | |||||||||||||||||||||||||
| 427 | - | |||||||||||||||||||||||||
| 428 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 429 | case never executed: 40:case 40:never executed: case 40: | 0 | ||||||||||||||||||||||||
| 430 | - | |||||||||||||||||||||||||
| 431 | addr_len = (socklen_t)sizeof(addr); | - | ||||||||||||||||||||||||
| 432 | memset((void *)&addr, 0, sizeof(addr)); | - | ||||||||||||||||||||||||
| 433 | if (getsockname(b->num, &addr.sa, &addr_len) < 0
| 0 | ||||||||||||||||||||||||
| 434 | ret = 0; | - | ||||||||||||||||||||||||
| 435 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 436 | } | - | ||||||||||||||||||||||||
| 437 | sockopt_len = sizeof(sockopt_val); | - | ||||||||||||||||||||||||
| 438 | switch (addr.sa.sa_family) { | - | ||||||||||||||||||||||||
| 439 | case never executed: case 2 :never executed: case 2 : | 0 | ||||||||||||||||||||||||
| 440 | 2 never executed: case 2 : | 0 | ||||||||||||||||||||||||
| 441 | : never executed: case 2 : | 0 | ||||||||||||||||||||||||
| 442 | ret = getsockopt(b->num, | - | ||||||||||||||||||||||||
| 443 | IPPROTO_IP | - | ||||||||||||||||||||||||
| 444 | , | - | ||||||||||||||||||||||||
| 445 | 14 | - | ||||||||||||||||||||||||
| 446 | , | - | ||||||||||||||||||||||||
| 447 | &sockopt_val, &sockopt_len); | - | ||||||||||||||||||||||||
| 448 | if (ret < 0
| 0 | ||||||||||||||||||||||||
| 449 | ret = 0; | - | ||||||||||||||||||||||||
| 450 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
| 451 | - | |||||||||||||||||||||||||
| 452 | - | |||||||||||||||||||||||||
| 453 | - | |||||||||||||||||||||||||
| 454 | data->mtu = sockopt_val - 8 - 20; | - | ||||||||||||||||||||||||
| 455 | ret = data->mtu; | - | ||||||||||||||||||||||||
| 456 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 457 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 458 | - | |||||||||||||||||||||||||
| 459 | case never executed: case 10 :never executed: case 10 : | 0 | ||||||||||||||||||||||||
| 460 | 10 never executed: case 10 : | 0 | ||||||||||||||||||||||||
| 461 | : never executed: case 10 : | 0 | ||||||||||||||||||||||||
| 462 | ret = getsockopt(b->num, | - | ||||||||||||||||||||||||
| 463 | IPPROTO_IPV6 | - | ||||||||||||||||||||||||
| 464 | , | - | ||||||||||||||||||||||||
| 465 | 24 | - | ||||||||||||||||||||||||
| 466 | , | - | ||||||||||||||||||||||||
| 467 | &sockopt_val, &sockopt_len); | - | ||||||||||||||||||||||||
| 468 | if (ret < 0
| 0 | ||||||||||||||||||||||||
| 469 | ret = 0; | - | ||||||||||||||||||||||||
| 470 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
| 471 | - | |||||||||||||||||||||||||
| 472 | - | |||||||||||||||||||||||||
| 473 | - | |||||||||||||||||||||||||
| 474 | data->mtu = sockopt_val - 8 - 40; | - | ||||||||||||||||||||||||
| 475 | ret = data->mtu; | - | ||||||||||||||||||||||||
| 476 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 477 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 478 | - | |||||||||||||||||||||||||
| 479 | default never executed: :default:never executed: default: | 0 | ||||||||||||||||||||||||
| 480 | ret = 0; | - | ||||||||||||||||||||||||
| 481 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 482 | } | - | ||||||||||||||||||||||||
| 483 | - | |||||||||||||||||||||||||
| 484 | - | |||||||||||||||||||||||||
| 485 | - | |||||||||||||||||||||||||
| 486 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 487 | case never executed: 47:case 47:never executed: case 47: | 0 | ||||||||||||||||||||||||
| 488 | switch (data->peer.sa.sa_family) { | - | ||||||||||||||||||||||||
| 489 | case never executed: case 2 :never executed: case 2 : | 0 | ||||||||||||||||||||||||
| 490 | 2 never executed: case 2 : | 0 | ||||||||||||||||||||||||
| 491 | : never executed: case 2 : | 0 | ||||||||||||||||||||||||
| 492 | ret = 576 - 20 - 8; | - | ||||||||||||||||||||||||
| 493 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 494 | case never executed: case 10 :never executed: case 10 : | 0 | ||||||||||||||||||||||||
| 495 | 10 never executed: case 10 : | 0 | ||||||||||||||||||||||||
| 496 | : never executed: case 10 : | 0 | ||||||||||||||||||||||||
| 497 | - | |||||||||||||||||||||||||
| 498 | if ( | - | ||||||||||||||||||||||||
| 499 | (
| 0 | ||||||||||||||||||||||||
| 500 | &data->peer.sa_in6.sin6_addr
| 0 | ||||||||||||||||||||||||
| 501 | ); __a->__in6_u.__u6_addr32[0] == 0 && __a->__in6_u.__u6_addr32[1] == 0 && __a->__in6_u.__u6_addr32[2] == __bswap_32 (0xffff); }))
| 0 | ||||||||||||||||||||||||
| 502 | ) | - | ||||||||||||||||||||||||
| 503 | ret = 576 - 20 - 8; never executed: ret = 576 - 20 - 8; | 0 | ||||||||||||||||||||||||
| 504 | else | - | ||||||||||||||||||||||||
| 505 | - | |||||||||||||||||||||||||
| 506 | ret = 1280 - 40 - 8; never executed: ret = 1280 - 40 - 8; | 0 | ||||||||||||||||||||||||
| 507 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 508 | default never executed: :default:never executed: default: | 0 | ||||||||||||||||||||||||
| 509 | ret = 576 - 20 - 8; | - | ||||||||||||||||||||||||
| 510 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 511 | } | - | ||||||||||||||||||||||||
| 512 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 513 | case never executed: 41:case 41:never executed: case 41: | 0 | ||||||||||||||||||||||||
| 514 | return never executed: data->mtu;return data->mtu;never executed: return data->mtu; | 0 | ||||||||||||||||||||||||
| 515 | break; dead code: break; | - | ||||||||||||||||||||||||
| 516 | case never executed: 42:case 42:never executed: case 42: | 0 | ||||||||||||||||||||||||
| 517 | data->mtu = num; | - | ||||||||||||||||||||||||
| 518 | ret = num; | - | ||||||||||||||||||||||||
| 519 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 520 | case never executed: 32:case 32:never executed: case 32: | 0 | ||||||||||||||||||||||||
| 521 | to = (struct sockaddr *)ptr; | - | ||||||||||||||||||||||||
| 522 | - | |||||||||||||||||||||||||
| 523 | if (to !=
| 0 | ||||||||||||||||||||||||
| 524 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 525 | ) { | - | ||||||||||||||||||||||||
| 526 | data->connected = 1; | - | ||||||||||||||||||||||||
| 527 | switch (to->sa_family) { | - | ||||||||||||||||||||||||
| 528 | case never executed: case 2 :never executed: case 2 : | 0 | ||||||||||||||||||||||||
| 529 | 2 never executed: case 2 : | 0 | ||||||||||||||||||||||||
| 530 | : never executed: case 2 : | 0 | ||||||||||||||||||||||||
| 531 | memcpy(&data->peer, to, sizeof(data->peer.sa_in)); | - | ||||||||||||||||||||||||
| 532 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 533 | case never executed: case 10 :never executed: case 10 : | 0 | ||||||||||||||||||||||||
| 534 | 10 never executed: case 10 : | 0 | ||||||||||||||||||||||||
| 535 | : never executed: case 10 : | 0 | ||||||||||||||||||||||||
| 536 | memcpy(&data->peer, to, sizeof(data->peer.sa_in6)); | - | ||||||||||||||||||||||||
| 537 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 538 | default never executed: :default:never executed: default: | 0 | ||||||||||||||||||||||||
| 539 | memcpy(&data->peer, to, sizeof(data->peer.sa)); | - | ||||||||||||||||||||||||
| 540 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 541 | } | - | ||||||||||||||||||||||||
| 542 | } else { | - | ||||||||||||||||||||||||
| 543 | data->connected = 0; | - | ||||||||||||||||||||||||
| 544 | memset(&(data->peer), 0, sizeof(data->peer)); | - | ||||||||||||||||||||||||
| 545 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 546 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 547 | case never executed: 46:case 46:never executed: case 46: | 0 | ||||||||||||||||||||||||
| 548 | switch (data->peer.sa.sa_family) { | - | ||||||||||||||||||||||||
| 549 | case never executed: case 2 :never executed: case 2 : | 0 | ||||||||||||||||||||||||
| 550 | 2 never executed: case 2 : | 0 | ||||||||||||||||||||||||
| 551 | : never executed: case 2 : | 0 | ||||||||||||||||||||||||
| 552 | ret = sizeof(data->peer.sa_in); | - | ||||||||||||||||||||||||
| 553 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 554 | case never executed: case 10 :never executed: case 10 : | 0 | ||||||||||||||||||||||||
| 555 | 10 never executed: case 10 : | 0 | ||||||||||||||||||||||||
| 556 | : never executed: case 10 : | 0 | ||||||||||||||||||||||||
| 557 | ret = sizeof(data->peer.sa_in6); | - | ||||||||||||||||||||||||
| 558 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 559 | default never executed: :default:never executed: default: | 0 | ||||||||||||||||||||||||
| 560 | ret = sizeof(data->peer.sa); | - | ||||||||||||||||||||||||
| 561 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 562 | } | - | ||||||||||||||||||||||||
| 563 | if (num == 0
| 0 | ||||||||||||||||||||||||
| 564 | num = ret; never executed: num = ret; | 0 | ||||||||||||||||||||||||
| 565 | memcpy(ptr, &data->peer, (ret = num)); | - | ||||||||||||||||||||||||
| 566 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 567 | case never executed: 44:case 44:never executed: case 44: | 0 | ||||||||||||||||||||||||
| 568 | to = (struct sockaddr *) ptr; | - | ||||||||||||||||||||||||
| 569 | switch (to->sa_family) { | - | ||||||||||||||||||||||||
| 570 | case never executed: case 2 :never executed: case 2 : | 0 | ||||||||||||||||||||||||
| 571 | 2 never executed: case 2 : | 0 | ||||||||||||||||||||||||
| 572 | : never executed: case 2 : | 0 | ||||||||||||||||||||||||
| 573 | memcpy(&data->peer, to, sizeof(data->peer.sa_in)); | - | ||||||||||||||||||||||||
| 574 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 575 | case never executed: case 10 :never executed: case 10 : | 0 | ||||||||||||||||||||||||
| 576 | 10 never executed: case 10 : | 0 | ||||||||||||||||||||||||
| 577 | : never executed: case 10 : | 0 | ||||||||||||||||||||||||
| 578 | memcpy(&data->peer, to, sizeof(data->peer.sa_in6)); | - | ||||||||||||||||||||||||
| 579 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 580 | default never executed: :default:never executed: default: | 0 | ||||||||||||||||||||||||
| 581 | memcpy(&data->peer, to, sizeof(data->peer.sa)); | - | ||||||||||||||||||||||||
| 582 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 583 | } | - | ||||||||||||||||||||||||
| 584 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 585 | case never executed: 45:case 45:never executed: case 45: | 0 | ||||||||||||||||||||||||
| 586 | memcpy(&(data->next_timeout), ptr, sizeof(struct timeval)); | - | ||||||||||||||||||||||||
| 587 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 588 | - | |||||||||||||||||||||||||
| 589 | case never executed: 33:case 33:never executed: case 33: | 0 | ||||||||||||||||||||||||
| 590 | if (setsockopt(b->num,
| 0 | ||||||||||||||||||||||||
| 591 | 1
| 0 | ||||||||||||||||||||||||
| 592 | ,
| 0 | ||||||||||||||||||||||||
| 593 | 20
| 0 | ||||||||||||||||||||||||
| 594 | , ptr,
| 0 | ||||||||||||||||||||||||
| 595 | sizeof(struct timeval)) < 0
| 0 | ||||||||||||||||||||||||
| 596 | perror("setsockopt"); | - | ||||||||||||||||||||||||
| 597 | ret = -1; | - | ||||||||||||||||||||||||
| 598 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 599 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 600 | case never executed: 34:case 34:never executed: case 34: | 0 | ||||||||||||||||||||||||
| 601 | { | - | ||||||||||||||||||||||||
| 602 | socklen_t sz = sizeof(struct timeval); | - | ||||||||||||||||||||||||
| 603 | if (getsockopt(b->num,
| 0 | ||||||||||||||||||||||||
| 604 | 1
| 0 | ||||||||||||||||||||||||
| 605 | ,
| 0 | ||||||||||||||||||||||||
| 606 | 20
| 0 | ||||||||||||||||||||||||
| 607 | ,
| 0 | ||||||||||||||||||||||||
| 608 | ptr, &sz) < 0
| 0 | ||||||||||||||||||||||||
| 609 | perror("getsockopt"); | - | ||||||||||||||||||||||||
| 610 | ret = -1; | - | ||||||||||||||||||||||||
| 611 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
| 612 | ret = sz; never executed: ret = sz; | 0 | ||||||||||||||||||||||||
| 613 | } | - | ||||||||||||||||||||||||
| 614 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 615 | - | |||||||||||||||||||||||||
| 616 | - | |||||||||||||||||||||||||
| 617 | case never executed: 35:case 35:never executed: case 35: | 0 | ||||||||||||||||||||||||
| 618 | if (setsockopt(b->num,
| 0 | ||||||||||||||||||||||||
| 619 | 1
| 0 | ||||||||||||||||||||||||
| 620 | ,
| 0 | ||||||||||||||||||||||||
| 621 | 21
| 0 | ||||||||||||||||||||||||
| 622 | , ptr,
| 0 | ||||||||||||||||||||||||
| 623 | sizeof(struct timeval)) < 0
| 0 | ||||||||||||||||||||||||
| 624 | perror("setsockopt"); | - | ||||||||||||||||||||||||
| 625 | ret = -1; | - | ||||||||||||||||||||||||
| 626 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 627 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 628 | case never executed: 36:case 36:never executed: case 36: | 0 | ||||||||||||||||||||||||
| 629 | { | - | ||||||||||||||||||||||||
| 630 | socklen_t sz = sizeof(struct timeval); | - | ||||||||||||||||||||||||
| 631 | if (getsockopt(b->num,
| 0 | ||||||||||||||||||||||||
| 632 | 1
| 0 | ||||||||||||||||||||||||
| 633 | ,
| 0 | ||||||||||||||||||||||||
| 634 | 21
| 0 | ||||||||||||||||||||||||
| 635 | ,
| 0 | ||||||||||||||||||||||||
| 636 | ptr, &sz) < 0
| 0 | ||||||||||||||||||||||||
| 637 | perror("getsockopt"); | - | ||||||||||||||||||||||||
| 638 | ret = -1; | - | ||||||||||||||||||||||||
| 639 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
| 640 | ret = sz; never executed: ret = sz; | 0 | ||||||||||||||||||||||||
| 641 | } | - | ||||||||||||||||||||||||
| 642 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 643 | - | |||||||||||||||||||||||||
| 644 | case never executed: 38:case 38:never executed: case 38: | 0 | ||||||||||||||||||||||||
| 645 | - | |||||||||||||||||||||||||
| 646 | case never executed: 37:case 37:never executed: case 37: | 0 | ||||||||||||||||||||||||
| 647 | if (data->_errno ==
| 0 | ||||||||||||||||||||||||
| 648 | 11
| 0 | ||||||||||||||||||||||||
| 649 | ) { | - | ||||||||||||||||||||||||
| 650 | ret = 1; | - | ||||||||||||||||||||||||
| 651 | data->_errno = 0; | - | ||||||||||||||||||||||||
| 652 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
| 653 | ret = 0; never executed: ret = 0; | 0 | ||||||||||||||||||||||||
| 654 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 655 | - | |||||||||||||||||||||||||
| 656 | case never executed: 43:case 43:never executed: case 43: | 0 | ||||||||||||||||||||||||
| 657 | if (data->_errno ==
| 0 | ||||||||||||||||||||||||
| 658 | 90
| 0 | ||||||||||||||||||||||||
| 659 | ) { | - | ||||||||||||||||||||||||
| 660 | ret = 1; | - | ||||||||||||||||||||||||
| 661 | data->_errno = 0; | - | ||||||||||||||||||||||||
| 662 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
| 663 | ret = 0; never executed: ret = 0; | 0 | ||||||||||||||||||||||||
| 664 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 665 | - | |||||||||||||||||||||||||
| 666 | default never executed: :default:never executed: default: | 0 | ||||||||||||||||||||||||
| 667 | ret = 0; | - | ||||||||||||||||||||||||
| 668 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 669 | } | - | ||||||||||||||||||||||||
| 670 | return never executed: (ret);return (ret);never executed: return (ret); | 0 | ||||||||||||||||||||||||
| 671 | } | - | ||||||||||||||||||||||||
| 672 | - | |||||||||||||||||||||||||
| 673 | static int | - | ||||||||||||||||||||||||
| 674 | dgram_puts(BIO *bp, const char *str) | - | ||||||||||||||||||||||||
| 675 | { | - | ||||||||||||||||||||||||
| 676 | int n, ret; | - | ||||||||||||||||||||||||
| 677 | - | |||||||||||||||||||||||||
| 678 | n = strlen(str); | - | ||||||||||||||||||||||||
| 679 | ret = dgram_write(bp, str, n); | - | ||||||||||||||||||||||||
| 680 | return never executed: (ret);return (ret);never executed: return (ret); | 0 | ||||||||||||||||||||||||
| 681 | } | - | ||||||||||||||||||||||||
| 682 | - | |||||||||||||||||||||||||
| 683 | - | |||||||||||||||||||||||||
| 684 | static int | - | ||||||||||||||||||||||||
| 685 | BIO_dgram_should_retry(int i) | - | ||||||||||||||||||||||||
| 686 | { | - | ||||||||||||||||||||||||
| 687 | int err; | - | ||||||||||||||||||||||||
| 688 | - | |||||||||||||||||||||||||
| 689 | if ((
| 0 | ||||||||||||||||||||||||
| 690 | err = | - | ||||||||||||||||||||||||
| 691 | (*__errno_location ()) | - | ||||||||||||||||||||||||
| 692 | ; | - | ||||||||||||||||||||||||
| 693 | return never executed: (BIO_dgram_non_fatal_error(err));return (BIO_dgram_non_fatal_error(err));never executed: return (BIO_dgram_non_fatal_error(err)); | 0 | ||||||||||||||||||||||||
| 694 | } | - | ||||||||||||||||||||||||
| 695 | return never executed: (0);return (0);never executed: return (0); | 0 | ||||||||||||||||||||||||
| 696 | } | - | ||||||||||||||||||||||||
| 697 | - | |||||||||||||||||||||||||
| 698 | int | - | ||||||||||||||||||||||||
| 699 | BIO_dgram_non_fatal_error(int err) | - | ||||||||||||||||||||||||
| 700 | { | - | ||||||||||||||||||||||||
| 701 | switch (err) { | - | ||||||||||||||||||||||||
| 702 | case never executed: case 4 :never executed: case 4 : | 0 | ||||||||||||||||||||||||
| 703 | 4 never executed: case 4 : | 0 | ||||||||||||||||||||||||
| 704 | : never executed: case 4 : | 0 | ||||||||||||||||||||||||
| 705 | case never executed: case 11 :never executed: case 11 : | 0 | ||||||||||||||||||||||||
| 706 | 11 never executed: case 11 : | 0 | ||||||||||||||||||||||||
| 707 | : never executed: case 11 : | 0 | ||||||||||||||||||||||||
| 708 | case never executed: case 115 :never executed: case 115 : | 0 | ||||||||||||||||||||||||
| 709 | 115 never executed: case 115 : | 0 | ||||||||||||||||||||||||
| 710 | : never executed: case 115 : | 0 | ||||||||||||||||||||||||
| 711 | case never executed: case 114 :never executed: case 114 : | 0 | ||||||||||||||||||||||||
| 712 | 114 never executed: case 114 : | 0 | ||||||||||||||||||||||||
| 713 | : never executed: case 114 : | 0 | ||||||||||||||||||||||||
| 714 | return never executed: (1);return (1);never executed: return (1); | 0 | ||||||||||||||||||||||||
| 715 | default never executed: :default:never executed: default: | 0 | ||||||||||||||||||||||||
| 716 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 717 | } | - | ||||||||||||||||||||||||
| 718 | return never executed: (0);return (0);never executed: return (0); | 0 | ||||||||||||||||||||||||
| 719 | } | - | ||||||||||||||||||||||||
| Switch to Source code | Preprocessed file |