Changeset 155 for uKadecot/trunk/uip/apps/webserver/httpd.c
- Timestamp:
- Feb 4, 2016, 11:11:09 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uKadecot/trunk/uip/apps/webserver/httpd.c
r154 r155 203 203 } 204 204 205 if (s->file.redirect) { 206 len = strlen(http_location); 207 memcpy(pos, http_location, len); pos += len; 208 if (s->drv == 1) { 209 len = 2; 210 memcpy(pos, "/~", len); pos += len; 211 } 212 len = strlen(s->filename); 213 memcpy(pos, s->filename, len); pos += len; 214 len = 2; 215 memcpy(pos, "\r\n", len); pos += len; 216 } 217 205 218 ptr = strrchr(s->message.request_url, ISO_period); 206 219 if (ptr == NULL) { … … 248 261 PT_BEGIN(&s->outputpt); 249 262 250 s->file.fs = ((char *)&s[1]) - 64 - 512; 251 252 if (!httpd_fs_open(s->drv, s->filename, &s->file)) { 263 if (!httpd_fs_open(s->drv, s->filename, sizeof(s->filename), &s->file)) { 253 264 s->drv = 0; 254 httpd_fs_open(s->drv, http_404_html, &s->file);255 strcpy_s(s->message.request_url, sizeof(s->message.request_url), http_404_html);265 strcpy_s(s->filename, sizeof(s->filename), http_404_html); 266 httpd_fs_open(s->drv, s->filename, sizeof(s->filename), &s->file); 256 267 PT_WAIT_THREAD(&s->outputpt, 257 268 send_headers(s, … … 261 272 PT_WAIT_THREAD(&s->outputpt, 262 273 send_headers(s, 263 http_header_200));274 s->file.redirect ? http_header_301 : http_header_200)); 264 275 PT_WAIT_THREAD(&s->outputpt, send_file(s)); 265 276 } … … 381 392 size_t done; 382 393 const char *data; 394 char *ptr; 395 383 396 PSOCK_BEGIN(&s->sin); 384 397 … … 407 420 /* ""か"/"なら"index.html"に変更 */ 408 421 if ((s->message.request_url[0] == '\0') || ((s->message.request_url[0] == '/') && (s->message.request_url[1] == '\0'))) { 409 s trncpy_s(s->message.request_url, sizeof(s->message.request_url), http_index_html, sizeof(s->message.request_url));410 s ->filename = s->message.request_url;422 s->drv = 0; 423 strcpy_s(s->filename, sizeof(s->filename), http_index_html); 411 424 } 412 425 /* "/~/"ならSDカードから読み込み */ 413 426 else if ((s->message.request_url[0] == '/') && (s->message.request_url[1] == '~') && (s->message.request_url[2] == '/')) { 414 427 s->drv = 1; 415 s ->filename = &s->message.request_url[2];428 strcpy_s(s->filename, sizeof(s->filename), &s->message.request_url[2]); 416 429 } 417 430 else { 418 431 s->drv = 0; 419 s->filename = s->message.request_url; 420 } 432 strcpy_s(s->filename, sizeof(s->filename), s->message.request_url); 433 } 434 435 ptr = strrchr(s->filename, '?'); 436 if (ptr != NULL) 437 ptr[0] = '\0'; 421 438 422 439 /* httpd_log_file(uip_conn->ripaddr, s->message.request_url);*/ … … 426 443 s->state = STATE_WS_OUTPUT; 427 444 445 s->close_req = 0; 428 446 websocket_init(&s->websocket, uip_getid((struct uip_conn *)((intptr_t)s - offsetof(struct uip_conn, appstate)))); 429 447 for (;;) {
Note:
See TracChangeset
for help on using the changeset viewer.