... | ... |
@@ -430,6 +430,31 @@ The request was not understood or is not allowed by this server.\r\n\ |
430 | 430 |
return(res); |
431 | 431 |
} |
432 | 432 |
|
433 |
+int |
|
434 |
+wk_serve_redirect(wk *paramweb, int connid, char *newlocation) |
|
435 |
+{ |
|
436 |
+ int res; |
|
437 |
+ int total; |
|
438 |
+ _wk *web=(_wk *)paramweb; |
|
439 |
+ wk_client *client; |
|
440 |
+ if(web==NULL) |
|
441 |
+ return(-1); |
|
442 |
+ if((client=wk_clientget(web,connid))==NULL || newlocation==NULL || newlocation[0]=='\0') |
|
443 |
+ return(-1); |
|
444 |
+ total=0; |
|
445 |
+ if((res=wk_writestr((wk *)web,connid,"HTTP/1.1 302 Found\r\nLocation: "))<0) |
|
446 |
+ return(-1); |
|
447 |
+ total+=res; |
|
448 |
+ if((res=wk_writestr((wk *)web,connid,newlocation))<0) |
|
449 |
+ return(-1); |
|
450 |
+ total+=res; |
|
451 |
+ if((res=wk_writestr((wk *)web,connid,"\r\n\r\n"))<0) |
|
452 |
+ return(-1); |
|
453 |
+ total+=res; |
|
454 |
+ return(total); |
|
455 |
+} |
|
456 |
+ |
|
457 |
+ |
|
433 | 458 |
int |
434 | 459 |
wk_writestr(wk *paramweb, int connid, const char *str) |
435 | 460 |
{ |
... | ... |
@@ -54,6 +54,7 @@ int wk_service(wk *web); /* To be called after sselelect_wait() but before ssele |
54 | 54 |
int wk_serve_buffer_as_file(wk *web, int connid, void *data, int datalen, const char *mime); |
55 | 55 |
int wk_serve_file(wk *web, int connid, char *filename, const char *mime); |
56 | 56 |
int wk_serve_error(wk *web, int connid, wk_error wkerror); |
57 |
+int wk_serve_redirect(wk *web, int connid, char *newlocation); |
|
57 | 58 |
int wk_writestr(wk *web, int connid, const char *str); |
58 | 59 |
int wk_write(wk *web, int connid, const void *data, int datalen); |
59 | 60 |
int wk_close(wk *web, int connid); |